堆栈

LeetCode-堆栈的使用

末鹿安然 提交于 2019-11-30 09:40:06
20. Valid Parentheses 有效的配对 https://leetcode.com/problems/valid-parentheses/ 题目:如果一个字符串只包含‘(’,‘)、’{‘、’}‘、’[‘和’]‘,则确定输入字符串是否有效。打开括号必须由相同类型的括号关闭,则输入字符串是有效的。开括号必须按照正确的顺序关闭。注意,空字符串也被认为是有效的。 思路:新建一个栈,遍历输入字符串,如果当前字符为左半边括号,则将其压入栈中;如果当前字符为右半边括号且栈为空,则直接返回false;如果当前字符为右半边括号且栈不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回false。 32. Longest Valid Parentheses 最长有效配对 https://leetcode.com/problems/longest-valid-parentheses/ 题目:给定一个只包含字符‘(’和‘)’的字符串,查找最长的有效(格式良好)括号子字符串的长度。 思路: ①使用Stack栈 ②DP动态规划 class Solution { public int longestValidParentheses(String s) { // using Stack Stack<Integer> st = new Stack<>(); int result = 0;

2-4 另类堆栈

自闭症网瘾萝莉.ら 提交于 2019-11-30 04:26:34
在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满? 函数接口定义: bool Push( Stack S, ElementType X ); ElementType Pop( Stack S ); 其中Stack结构定义如下: typedef int Position; typedef struct SNode *PtrToSNode; struct SNode { ElementType *Data; /* 存储元素的数组 */ Position Top; /* 栈顶指针 */ int MaxSize; /* 堆栈最大容量 */ }; typedef PtrToSNode Stack; 注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果队列是空的,则Pop函数必须输出“Stack Empty”,并且返回ERROR。 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> #define ERROR -1 typedef int ElementType; typedef enum { push, pop, end } Operation; typedef enum { false, true } bool;

php的xdebug的配置、调试、跟踪、调优、分析

烈酒焚心 提交于 2019-11-30 03:49:56
xdebug 的 profiler 是一个强大的工具,它能分析 PHP 代码,探测瓶颈,或者通常意义上来说查看哪部分代码运行缓慢以及可以使用速度提升。Xdebug 2 分析器输出一种兼容 cachegrind 文件格式的分析信息。这允许你能使用出色的 KCacheGrind 工具(Linux,KDE)来分析你的 profiling 数据。在 Linux 可以使用你最喜欢的包管理器安装 KCacheGrind。 在 windows 系统上,有预编译的 QCacheGrind 二进制程序(QCacheGrind 是没有 KDE 绑定的 KCacheGrind)。 在 Mac OSX 系统上,这里也有怎样安装 QCacheGrind 的 说明 。 Windows 用户可以选择性的使用 WinCacheGrind 。它的功能不同于 KCacheGrind,所以 这个页面的 KCacheGrind 使用文档章节不适用于这个程序。WinCacheGrind 目前不支持 Xdebug 2.3 引入的 cachegrind 文件格式的的文件和函数压缩。 这也有一种可替代 profile 信息演示的工具叫做 xdebugtoolkit 。一款基于 web 前端叫做 Webgrind ,和一款基于 java 的工具叫做 XCallGraph 。 如果你不能使用 KDE(或者不想使用 KDE)的

C#集合

爱⌒轻易说出口 提交于 2019-11-30 03:01:43
集合是专门用于数据存储和检索的类。这些类提供了堆栈,队列,列表,接口和哈希表的支持。大多数集合类实现了相同的接口。 各种集合类和他们的用法 动态数组   它代表了可被单独索引的对象的有序集合   他基本上可以替代一个数组。但是与数组不同的是,可以用索引在指定的位置添加和移除项目,动态数组会自动重新调整他的大小,它也允许在列表中进行动态内存分配,增加,搜索,排序各项 哈希表   它使用键来访问集合中的元素   当你使用键来访问元素时,则使用哈希表,而且可以识别到一个有用的键值。哈希表的每一项都是一个键值对,键用于访问集合中的项目 排序列表   它可以使用键和索引来访问列表中的项   排序列表是数组和哈希表的组合。它包含了它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。 堆栈   它代表了一个后进先出的对象集合。   当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素 队列   它代表了一个先进先出的对象集合。   当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。 点阵列   它代表了一个使用值 1 和 0

数据结构与算法 - 栈和队列

那年仲夏 提交于 2019-11-30 02:53:11
栈(stack) 先进后出,删除与加入均在栈顶操作 栈也称为堆栈,是一种线性表。 堆栈的特性: 最先放入堆栈中的内容最后被拿出来,最后放入堆栈中的内容最先被拿出来, 被称为先进后出、后进先出。 堆栈中两个最重要的操作是PUSH和POP,两个是相反的操作。 PUSH:在堆栈的顶部加入一 个元素。 POP:在堆栈顶部移去一个元素, 并将堆栈的大小减一。 在成员变量方面,Vector提供了elementData , elementCount, capacityIncrement三个成员变量。其中        elementData :"Object[]类型的数组",它保存了Vector中的元素,可以随着元素的增加而动态的增长,如果在初始化Vector时没有指定容器大小,则使用默认大小为10. private static final int DEFAULT_SIZE = 10;初始化的值 protected int elementCount ; 栈元素数量(非空元素的长度) /** * 使用指定的初始容量和容量增量构造一个空的向量。 */ public Vector(int initialCapacity, int capacityIncrement) { //初始化 super(); if (initialCapacity < 0) throw new

计算机专业的爱情

ⅰ亾dé卋堺 提交于 2019-11-29 20:06:07
但是我不能抽象出你... 因为你在我心中是那么的具体... 所以我的世界并不完整... 我可以重载甚至覆盖这个世界里的任何一种方法... 但是我却不能重载对你的思念... 也许命中注定了 你在我的世界里永远的烙上了静态的属性... 而我不慎调用了爱你这个方法... 当我义无返顾的把自己作为参数传进这个方法时... 我才发现爱上你是一个死循环... 它不停的返回对你的思念压入我心里的堆栈... 在这无尽的黑夜中... 我的内存里已经再也装不下别人... 我不停的向系统申请空间... 但却捕获一个异常---我爱的人不爱我... 为了解决这个异常... 我愿意虚拟出最后一点内存... 把所有我能实现的方法地址压入堆栈... 并且在栈尾压入最后一个方法---将字符串"我爱你,你爱我吗?"传递给你... 如果返回值为真--我将用尽一生去爱你... 否则--我将释放掉所有系统资源. 转载于:https://my.oschina.net/u/2296689/blog/545794 来源: https://blog.csdn.net/chuoxieai9700/article/details/100904863

Java丨JVM虚拟机与类加载器

人盡茶涼 提交于 2019-11-29 19:29:38
一丶JVM 虚拟机介绍; Sun HotSpot VM 这个目前看起来“血统纯正”的虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies” 的小公 司设计的;甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM,而这款虚拟机中相当多的技术 又是来源于一款支 持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机,Sun公司注意到了 这款虚 拟机在JIT编译上有许多优秀的理念和实际效果,在1997年收购了Longvi ew Technologies公司,从而获得了HotSpot VM。 BEA JRockit VM JRockit VM曾经号称“世界上速度最快的JAVA 虚拟机”它是BEA公司在2002年从Appeal Virtual Machines 公司收 购的虚拟机。BEA公司将其发展为一款专门为服务器硬件和服务器端应用场景高度优化的虚拟机,由于专注于服务器端 应用,它可以不太关注程序启动速度,因此JRockit内部不包含解析器实现,全部代码都靠即时编译器译后执行。除此 之外,JRocki t的垃圾收集器和MissionControl服务套件等部分的实现,在众多JAVA虚拟机中也一直处于领先水平。 IBM J9 VM IBM J9 VM并不是IBM公司唯一的JAVA虚拟机

python实现基础的数据结构(二)

非 Y 不嫁゛ 提交于 2019-11-29 18:33:55
本文涉及到的代码均已放置在我的github中 --> 链接 python实现基础的数据结构(一) python实现基础的数据结构(二) python实现基础的数据结构(三) python语法较为简洁,正好最近在复习数据结构,索性就用python去实现吧😀 本文实现的有线性表、栈、队列、串、二叉树、图、排序算法。参照教材为 数据结构(C语言版)清华大学出版社 ,还有网上的一些大神的见解。由于包含代码在内,所以内容很多,分了几篇,话不多说,我们直接步入正题🙈 注:本文实验环境:Anaconda 集成 python 3.6.5 ( 故代码为 python3 ) 由于本文代码过多,故每一步不做太详细的介绍,我尽量在代码中解释细节,望体谅 串 串是由零个或者多个字符组成的优先序列,一般记为是s = ‘a1a2…an’ ,python对字符串的操作已经比较成熟和简单,所以我们这里着重介绍串的模式匹配算法,这就不得不提KMP匹配算法,这种算法和正则表达式有类似之处,一个用了DFA的思想,一个用了NFA的思想。 KMP算法的思想是,当匹配失败时,可以利用已经知晓的一部分文本内容,避免从头开始重新匹配。这个匹配的过程可以使用有限状态自动机(DFA)。可以看看 这位大神 的描述。 每当一趟匹配过程中出现字符比较不等时,不需要回溯I指针,而是利用已经的带的“部分匹配

Java虚拟机

不想你离开。 提交于 2019-11-29 18:33:08
Java虚拟机 垃圾收集器 young区 1.Serial 关注点:stw的时间 复制算法 STW 2.ParNew 关注点:stw的时间 Serial的多线程版本 复制算法 STW 参数 -XX:ParallelGCThreads 并行线程数 3.Parallel Scavenge 关注点:达到一个可控制的吞吐量(吞吐量优先) 复制算法所谓吞吐量就是CPU运行用户代码的时间和CPU消耗的时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间 垃圾收集时间)。 Paralled Scavenge 收集器提供了两个参数用于精确控制吞吐量。分别是控制最大垃圾收集停顿时间的-XX:MaxGCPauseMillis ,以及直接设置吞吐量大小的-XX:GCTimeRatio 参数。 参数 -XX:MaxGCPauseMillis -XX:GCTimeRatio -XX: UseAdaptiveSizePolicy 自适应调节策略 old区 1.Serial Old Serial的老年代版本 JDK1.5之前可搭配Parallel Scavenge使用 在CMS发生Concurrent mode failure时使用 Mark-Compact 2.Parallel Old Parallel Scavenge的老年代版本 JDK1.6出现 搭配Parallel Scavenge使用 Mark

JVM监控工具

和自甴很熟 提交于 2019-11-29 16:18:10
1. jps 在JDK的bin目录下,jps是参照Unix系统的取名规则命名的,功能和ps的功能类似,可以列举正在运行的虚拟机进程并显示虚拟机执行的主类以及这些进程的唯一ID(对应本机来说和PID相同). 示例: jps -m 输出JVM启动时传给主类的方法 jps -l 输出主类的全名,如果是Jar则输出jar的路径 jps -v 输出JVM的启动参数 2. jstat 在JDK的bin目录下,jstat主要用于监控虚拟机的各种运行状态信息,如类的装载、内存、垃圾回收、JIT编译器等,在没有GUI的服务器上,这款工具是首选的一款监控工具。 用法: jstat [option vmid [interval [s|ms] [vount] ] ] jstat 监控内容 线程号 刷新时间间隔 次数 示例: jstat –gc PID 1 20 监视Java堆,包含eden、2个survivor区、old区和永久带区域的容量、已用空间、GC时间合计等信息 jstat –gcutil PID 1 20 监视内容与-gc相同,但输出主要关注已使用空间占总空间的百分比 jstat –class PID 1 20 监视类的装载、卸载数量以及类的装载总空间和耗费时间等 3.jinfo 在JDK的bin目录下,jinfo的作用是实时查看虚拟机的各项参数信息 用法:jinfo [option] pid