数据结构
一只老风铃
欣于所遇,暂得于己,快然自足。
展开
-
布隆过滤器
数据结构原创 2022-07-24 15:16:48 · 431 阅读 · 0 评论 -
状态DP:二进制状态与图的搜索
问题引入描述城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi,路费是Ci。决定去其中的R个郊区,需要找到一条路线使得他们的花费最少,假设他们制定的旅游路线为V1, V2 ,V3 … VR,那么他们的总花费为从V1到V2的花费加上V2到V3的花费依次类推输入描述:第一行三个整数n, m, R(2 ≤ n ≤ 200, 1 ≤ m ≤ 5000, 2 ≤ R ≤ min(n, 15))。第二行R个整数表示需要去玩耍的郊区编号。以下m行每行Ai, Bi, Ci(1 ≤ Ai, Bi原创 2021-12-11 15:54:39 · 431 阅读 · 0 评论 -
树形DP:配对染色
问题引入描述给定一棵树,为每个顶点染成红色或蓝色。要求:每个红点周围有且仅有一个红点,每个蓝点周围有且仅有一个蓝点。“周围”的定义:某点周围的点指通过邻边直接连接的点。所谓树,即没有自环、重边和回路的无向连通图。输入描述:第一行一个正整数 n,代表树的顶点个数.。接下来的 n-1 行,每行两个正整数 u 和 v,代表点 u 和点 v 有一条边连接。保证输入的一定是一棵合法的树。输出描述:如果可以达成染色的要求,请输出一个长度为 n 的字符串,第 i个字符代表第 i个顶原创 2021-12-09 22:25:17 · 1638 阅读 · 0 评论 -
LCA:路径积
LCA算法LCA即最近公共祖先,其通常的解决方法可以采取递归实现递归:采取后序遍历的方式,当第一个这样的父节点出现:即访问了那两个节点,那么该父节点即为所求具体可以采取count记录访问过的目标节点数目另外如果有多组这样的查询,可以从根节点开始,遍历一次构建Depth深度数组以及Parent回溯映射那么对于任意两个节点,先将深度Depth较大的那个向上回溯m=parent[m] =>直到同一高度,然后两个点一起回溯=》直到重合即为最近父节点路径积问题描述给定一棵原创 2021-07-21 11:24:08 · 220 阅读 · 0 评论 -
维护X的秩:二叉搜索树构建
描述已知一个数组A及它的大小n,在读入这串数的时候算出每个数的秩,即在当前数组中小于等于它的数的个数(不包括它自身)。从而返回一个int数组,元素为每次加入的数的秩。保证数组大小小于等于5000。测试样例:[1,2,3,4,5,6,7],7返回:[0,1,2,3,4,5,6]思路要求随着数字的到来统计之前所有比当前小的数字的数目通过维护一棵二叉搜索树来实现,树的节点增加一个域Count用于统计左孩子节点的总数即:比当前节点更小的节点的数目那么一个新的数字A[i],从根节原创 2021-06-24 13:56:24 · 208 阅读 · 0 评论 -
单调栈+辅助栈:下一个较大元素的最小值
单调栈一个保持栈中元素有序的结构,可用于寻找元素下一个(最近)的较大值:若新来的元素比栈顶更小,那么不断弹出栈顶,以保持最终有序描述给定一个int数组A及其大小n,返回一个int数组,int数组中的元素是原数组中每个元素比他大的下一个元素,若不存在则为-1。保证数组中元素均为正整数。测试样例:[11,13,10,5,12,21,3],7返回:[13,21,12,12,21,-1,-1]struct num{ int val;//值 int index;//原先原创 2021-06-22 17:33:31 · 873 阅读 · 1 评论 -
双队列实现条件操作
双栈实现最值队列实现一个能随时返回最大值的栈,其核心操作是实现一个辅助单调栈:即若新入的元素,比单调栈(递增)栈顶还大(注意包含等于)则入到单调栈弹出元素时,若主栈栈顶元素与单调栈栈顶元素相等,则均弹出单调栈栈顶即主栈中最大的元素问题描述给定一个队列及一个操作序列ope,代表所进行的入队列出队列操作。第一个元素为1则入队列,第二个为对应的数;第一个元素为2则出队列,第二个若为0则出最先入队列的那个数,为1则出最先入队列的正数,为-1则出最先入队列的负数。请按顺序返回出队列的序列,并原创 2021-06-17 10:39:24 · 211 阅读 · 0 评论 -
同时推进-二叉树对称性判断
问题描述给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的1/ 2 2/ \ / 3 4 4 3下面这棵二叉树不对称。1/ 2 2\ 3 3备注:用递归和迭代两种方法解决这个问题非递归思路对于前序遍历:根节点=》左子树=》右子树若需要判断对称性,那么可以修改前序遍历的方式,即:①根节点=》左子树=》右子树②根节点=》右子树=》左子树①和②采取非递归的方式同步推进,研究中间每个节点是否对称原创 2021-06-09 11:45:54 · 125 阅读 · 0 评论 -
队列模拟+归并求解
题目描述排队等号时,观察到以下场景。银行有m个服务窗口,假设当前有n个人等待办理业务,那么这n个人会被顺序分配一个从1到n的号码。等待办理业务的流程如下:从第1号到第n号顺序的进行排队。假设当前第1号到第i-1号都正在办理或已经办理完业务,且某个窗口A没有客人正在办理业务,那么第i号会马上到窗口A办理他的业务。如果有多个这样的窗口,第i号会随意选择一个窗口。0时刻,观察到m个窗口都没有客人正在办理业务,而n个人正在等待办理业务。为了简化问题,我们假设第i号不管在哪个窗口办理业务,办原创 2021-04-29 14:57:18 · 175 阅读 · 0 评论 -
树的分割:DFS后序遍历
题目描述有n个房间,房间之间有通道相连,一共有n-1个通道,每两个房间之间都可以通过通道互相到达。通过封闭一些通道来把n个房间划分成k个互相不连通的区域,他希望这k个区域内部的金币数目和都大于等于m,是否可行。示例1输入3,2,3,[1,2],[2,3],[3,1,2]返回值true说明切断1和2之间的通道,划分出了2个金币数为3的连通块第一个参数n代表房间数量第二个参数k代表要划分成k块区域。第三个参数m代表每块区域的金币数要大于等于m第四、五个参数vector原创 2021-03-28 13:01:10 · 376 阅读 · 0 评论 -
单调栈进阶-区间合并
单调栈随着不断的输入数字,从栈底到栈顶维护一个递增的数列,当新来的数字比栈顶更小时,弹出栈顶并完成某种计算,直到保持递增趋势。问题描述给定一个数组序列,需要求选出一个区间,使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数*区间所有数的和如给定序列 [6 2 1]则根据上述公式,可得到所有可以选定各个区间的计算值:[6] = 6 * 6 = 36;[2] = 2 * 2 = 4;[1] = 1 * 1 = 1;[6,2] = 2 * 8 = 16;[2,1]原创 2021-03-08 23:42:04 · 273 阅读 · 0 评论 -
字典树-异或问题
题目描述给定整数m以及n各数字A1,A2,…An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大于m的有多少个。输入描述:第一行包含两个整数n,m.第二行给出n个整数A1,A2,…,An。对于30%的数据,1 <= n, m <= 1000对于100%的数据,1 <= n, m, Ai <= 10^5示例1输入3 106 5 10输出2求解思路容易知道如果两个数字异或的结果res大于m, 那么一定是从某一位开始原创 2021-03-02 14:37:44 · 463 阅读 · 0 评论 -
最小生成树算法-kruskal与prim
最小生成树算法是图论中的经典贪心算法,主要有kruskal和primkruskal算法其基本思想是:每次加入一条尽可能短的边到目标生成树中首先初始化所有节点为单独的树,可采取并查集father数组表示将所有的边按照权重从小到大排列每次选取一条边,如果边两侧的顶点不再一个集合中,那么合并(加入到最终生成树中)否则,抛弃=》直到挑选了n-1条边(节点数目为n)那么即为最终最小生成树prim算法其基本思想是:每次选择离生成树集合最近的点加入到生成树集合首先初始化其中一个节点加入生成树集.原创 2021-02-28 01:03:30 · 166 阅读 · 0 评论 -
二叉树中最大搜索子树和最大搜索子结构
最大的搜索子树输入描述:第一行输入两个整数 n 和 root,n 表示二叉树的总节点个数,root 表示二叉树的根节点。以下 n 行每行三个整数 fa,lch,rch,表示 fa 的左儿子为 lch,右儿子为 rch。(如果 lch 为 0 则表示 fa 没有左儿子,rch同理)ps:节点的编号就是节点的值。输入3 22 1 31 0 03 0 0输出3基本思路研究root开头的子树是否满足二叉搜索树,满足那么直接返回root的大小否则开始研究root的左右孩子所在子树。原创 2021-01-26 16:31:46 · 383 阅读 · 0 评论 -
二叉树的最近公共祖先
二叉树的最近公共祖先若为传统的tree_node求解问题*基本思路:采取DFS方式,对于当前节点,研究是否为目标节点的一个。然后根据递归子问题的返回,若其中一个子树返回2,那么说明问题已经在子树中解决,否则,计算子树返回的数目+当前节点是否为目标点的数目。最后返回若为多组目标点求解问题基本思路:首先通过DFS建立每个节点=》节点level深度的映射。同时建立每个节点=》父亲节点的映射。(物理存储可能采取map或者数组方式)然后LCA算法过程,首先研究两个点是否在同一Level。如果不原创 2021-01-22 10:50:51 · 177 阅读 · 0 评论 -
前缀树实现最大异或子数组
问题描述数组异或和的定义:把数组中所有的数异或起来得到的值。给定一个整型数组arr,其中可能有正、有负,有零,求其中子数组的最大异或和。输入43 -28 -29 2输出7说明{-28,-29}这个子数组的异或和为7,是所有子数组中最大的思路对于求子数组问题,通常采取动态规划dp[i]=k表示前i项的异或值那么对于其中的【i=>j】其异或值为dp[j]与dp[i-1]的“异或值做除法"本题思路是维护一个前缀数组,即字典树形式计算XOR[]表示前i项的异或值,那么对原创 2021-01-15 11:19:38 · 296 阅读 · 0 评论 -
Leetcode:单调栈_可见山峰问题
题目描述一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2->1->3 方向叫作 last 方向(顺时针)。山峰 A 和 山峰 B 能够相互看见的条件为:如果 A 和 B 是同一座山,认为不能相互看见。如果 A 和 B 是不同的山,并且原创 2020-12-12 04:25:25 · 778 阅读 · 0 评论 -
单调栈结构
问题引出单调栈是这样一类结构,栈中的元素有序,例如一个单调递增栈,如果新来的元素比栈顶更大,那么入栈;如果新来的元素比栈顶更小,那么弹出若干栈顶元素,直到新来的元素能够入栈单调栈经典问题:条形图的最大矩形面积该问题,维护一个单调递增栈,如果新来的元素比栈顶小,那么开始一个count计数弹出。不断计算矩形面积:count*stack.top() 即使每次的矩形是top高度×当前矩形的长(count计数)。同时弹出count个元素,重新压入count+1个新元素(新元素使得前面部分减少:短板效原创 2020-12-10 17:33:32 · 250 阅读 · 0 评论 -
双堆实现任意删除:天际线扫描
堆的删除堆其结构为完全二叉树,物理存储采取数组,一个点I 其孩子节点为 2i+1 2i+2 堆的操作包含top() pop() push()并且这些操作都是基于堆的顶部进行,其通常调用down下沉操作和up上浮操作。堆不支持任意节点的删除(意味着节点之间顺序打乱)。通常可以基于双堆实现逻辑删除。class my_heap{ private: priority_queue<int> q1; //最大堆 priority_queue<int>原创 2020-11-21 12:08:35 · 308 阅读 · 0 评论 -
huffman树:最小拆分代价即最小带权路径和
huffman树给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。huffman树使得原先不同权重的叶子节点经过整合按照不同的层次进行分布,其具有的特点是:值越大的叶子节点,距离根节点越近。值越小的叶子节点,距离根节点越远。根据huffman树最优带权路径的特性,产生了huffman编码:从huffman树根节点开始,沿左边编码0 沿右边编码1 从根节点到叶子原创 2020-11-19 02:37:17 · 513 阅读 · 0 评论 -
Leetcode 双堆实现排序
双堆思路双堆,一个最大堆,一个最小堆通常用于实现某种排序查找策略,可以维护在O(NlogN)的时间复杂度。典型的例子是实现输入流的中位数快速查找,其可以在O(1)的时间内返回中位数。基本思路是,维护两个大小相等(或相差不超过1的堆每次新来的数字判断其与最大堆的堆顶(较小那一部分集合的最大值)大小,来决定加入到哪一部分,并合适的移动,使得两边维护者数量相等的部分。题目描述给定两个整数W和K,W代表你拥有的初始资金,K代表你最多可以做K个项目。再给定两个长度为N的正数数组costs[]和profi原创 2020-11-19 01:15:34 · 280 阅读 · 0 评论 -
Linux进程执行环境
进程环境进程的环境,主要是描述是对程序执行时,main函数如何被调用;命令行参数以及环境变量如何传递给程序;进程的存储空间布局形式;以及进程终止方式;进程的资源限制等问题。一个典型的C程序总是从main开始执行 int main(argc,char* argv[]) 内核执行C程序时,其通过父进程采取exec函数,在调用main之前先调用一个启动例程。启动例程将命令行参数和环境变量从内核中获取,传递给进程。一个典型的C程序启动与终止:可以看到,总是从一个C启动例程开始,由它启动main函数,而原创 2020-11-14 02:49:34 · 399 阅读 · 0 评论 -
Leetcode 服务器分发
共有n台服务器,每台服务器可以和若干个子服务器传输数据,n台服务器组成一个树状结构。现在要将一份数据从root节点开始分发给所有服务器。一次数据传输需要一个小时时间,一个节点可以同时对k个儿子节点进行并行传输,不同节点可以并行分发。问,全部分发完成,最短需要多少小时?【示例】:当共有5台服务器,其树状结构为 0 /\ 12 / \3 4假设每一台服务器同时可以对1个儿子节点(k=1)并行传输,最优的数据传...原创 2020-10-19 15:05:21 · 336 阅读 · 0 评论 -
Leetcode 关于链表排序与元素删除
链表问题通常有两大类思路:修改节点指针:使得它们以符合要求的顺序勾连,例如链表翻转修改节点内容:不修改节点指向,而是采取交换或修改其中节点的值【问题①:删除链表中node* p指向的节点】思路:由于没有前置节点,故无法物理取消前置节点到该节点的勾连,采用下一个节点的值覆盖当前节点的值(实际删除下一个节点)void del(node* p){ p->val=p->next->val; p->next=p->next->next;}注意只原创 2020-10-17 01:38:24 · 202 阅读 · 0 评论 -
Leetcode 关于出栈序列:状态转移DFS+全排列+模拟
已知某一个字母序列,把序列中的字母按出现顺序压入一个栈,在入栈的任意过程中,允许栈中的字母出栈,求所有可能的出栈顺序。例如:入栈顺序:abc其所有可能出栈顺序。abcacbbacbcacba【思路一】状态转移+DFS模拟出所有操作:容易知道一个状态包含以下三部分:常见的状态转移过程:q1为空 stack为空 =》那么所有元素都已经出栈,输出出栈序列,为终止状态 q1为空 stack不为空 =》那么只能出...原创 2020-10-17 01:25:03 · 1015 阅读 · 2 评论 -
Leetcode 单双字典树
题目描述有n个只包含小写字母的串s1,s2,..sn,每次给你一个只包含小写字母的串t。如果串S存在前缀S',它的奇数位的字符与t的奇数位字符完全相同,称S为t的单匹配串,如果串S的偶数位字符与t的偶数位的字符全都相同,称S为t的双匹配串。现在给你m个字符串,对于每个字符串t,求s1,s2,...sn中有多少个串是t的单匹配串但不是t的双匹配串。示例1输入复制3,["abc", "bbc", "cbd"],3,["abc","cad","bac"]输出复制原创 2020-10-07 00:09:17 · 109 阅读 · 0 评论 -
二叉树右视图
题目描述请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图示例1输入复制[1,2,4,5,3],[4,2,5,1,3]输出复制[1,3,5]基本思路:先构建二叉树然后层次遍历,记录下每一层的最后一个节点(或者层次遍历从右往左)易错点:层次遍历每一层之前先记录下队列大小。struct treenode{ int val; treenode* left; treenode* right; ..原创 2020-10-03 22:58:32 · 189 阅读 · 0 评论 -
Leetcode 堆排序
堆是完全二叉树,即对于一个节点k 其孩子节点为2k+1 2k+2 (存在孩子节点情况下) 满足任意一个节点值大于(或小于)其孩子节点值,在建立和调整堆的过程包含两大操作:shift_up:向上调整,通常用于末尾添加一个新节点后,向上方向移动若干个位置,即不断判断其父亲节点是否更小,若是:交换 shift_down:向下调整,当根节点删除后,需要在根节点补充一个(通常是末尾),该元素需要下沉到合适位置,基本策略是:若当前节点比左右孩子节点都大,无需调整。 否则,找到孩子节点的最大值,与当前...原创 2020-10-02 10:01:21 · 571 阅读 · 0 评论 -
Trie字典树
字典树,顾名思义,存放大量单词的字典,将每个单词按照char分隔开,依次从根节点开始下降到某一节点,而路径则记录着单词的信息。其中每一个节点主要包含的信息有:int next[26] 其中next[i]=k表示引向字符'a'+i的边指向节点k(这里的k指的是下一个节点所在下标(若采取离散存储则是地址)) 若k=0 表示没有next边(因为0存放root节点) int sum;表示以该node节点为末尾的单词的数目(删除则sum-- 增加则sum++) int pre_sum; 表示...原创 2020-09-20 00:38:58 · 73 阅读 · 0 评论 -
bitmap 位存储实现海量数据的标记
针对海量的数据,一般的内存无法存储,提供一种位存储的标记方法?如给定10亿个数字,询问其中任意一个数字是否出现,采取传统的存储方式,以32位机器为例一个int占用32位,也就是4字节而bitmap的思想是,无符号int类型的范围是确定的 即0~2的32次方-1那么将一个int拆分开来看,其包含32个bit 若其中一个Bit为1那么标记原先的数字存在 那么对于一组int第一个int: 表示0~31这32个数字第二个int: 表示32~63这32个数字......对于任意...原创 2020-09-10 13:53:44 · 842 阅读 · 0 评论 -
unordered_map的实现-hashmap
C++STL中map包含两大类map:采取红黑树方式,map中的元素有序,读写都是O(LogN)的时间复杂度 unordered_map:元素无序,采取hashmap的实现方式,即连续存放的桶,数组+链表方式,一般的认为读写都是O(1)复杂度unordered_map是典型的采取空间换时间的方式达到一个良好的性能,初始化一定大小的vector(连续存储的数组)vector中index位置下标元素为一个bucket(桶) 针对一个(key,value)根据hash函数(常见的如 取模%)定.原创 2020-09-10 11:22:43 · 1438 阅读 · 0 评论 -
Leetcode 树的直径(树中最远的两个点)
题目描述给定一棵树,求出这棵树的直径,即两个节点距离的最大值。示例1输入复制6,[[0,1],[1,5],[1,2],[2,3],[2,4]],[3,4,2,1,5]输出复制11思路:从任意一个点出发找到最远的点P 从P点出发找到最远的点Q P Q之间的距离即为树中最远两个点距离证明:实现:采取基本的dfs 实现搜索最远的点,找到他们之后采取dfs 返回两者的距离int point_p; ...原创 2020-09-06 12:45:32 · 1666 阅读 · 0 评论 -
Leetcode 栈输出之排序
题目描述给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序当无法完全排序时,请输出字典序最大的出栈序列示例1输入复制[2,1,5,3,4]输出复制[5,4,3,1,2]说明2入栈;1入栈;5入栈;5出栈;3入栈;4入栈;4出栈;3出栈;1出栈;2出栈基本思路:容易知道,第一个输出的数字一定是最大的那个数字,其操作为一直入栈到最大的数字,然后弹栈输出该最大的数字那么第二输出...原创 2020-09-06 10:20:12 · 1025 阅读 · 2 评论 -
Leetcode 搜索二叉树中错误节点
题目描述一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)思路:搜索二叉树最重要性质为中序遍历为升序那么交换的可能是前后两个节点交换,那么中序遍历存在一组逆序对 中间隔开若开个节点交换,那么中序遍历存在两组逆序对那么只要记录下第一组逆序对的第一个元素,以及最后一组逆序对的第二个元素,即为原先交换的两个数关键实现 对于一组逆序对(first,second) ...原创 2020-09-06 06:13:19 · 769 阅读 · 0 评论 -
Leetcode 搜索二叉树与完全二叉树的判断
搜索二叉树:中序遍历为递增序列,如果不是,返回false完全二叉树:层次遍历中,不出现以下情况一个节点,其左子树为空,右子树不为空 遍历到一个叶子节点或(该节点左子树不为空,右子树为空),其以后的所有节点必须全部为叶子节点BST判定 采取stack非递归实现 //判断是否为搜索二叉树 中序遍历即可,若非递增那么不是 bool BSTJudge(TreeNode* root) { stack<TreeNode*> ...原创 2020-09-02 11:13:40 · 590 阅读 · 0 评论 -
Leetcode LFU_Cache缓存结构设计
之前LRU最近最久未使用缓存结构设计采取存储方式为map<key,List<pair<int,int>>::iterator> 存放key到(key,value)映射 可直接get到 List<pair<key,value>> 存放(key,value)链表 维护大小为k 末尾为最久未使用题目描述一个缓存结构需要实现...原创 2020-08-28 14:23:03 · 511 阅读 · 0 评论 -
基本数据结构 最小堆
最小堆,是完全二叉树,其基本定义是任何一个节点小于其左右子树的节点常见操作:加入一个值,取最小值,删除最小值加入一个值,直接加入到末尾a[size++] 然后该元素上浮到合适位置最大值即根节点 a[0]删除最小值,让末尾元素填充到a[0] 然后该元素下沉到合适位置下沉过程中,选取左右子节点的最小值,上浮(任满足节点大于左右子树)易错点,树中没有节点,以及下沉过程中,是否存在左右子树的判断(即基本的数组区间判断)class heap{public: int ...原创 2020-08-02 13:11:58 · 738 阅读 · 0 评论 -
Leetcode Min_stack
实现能够取最小值得stack原理:其中主栈和stack类似存取,另一个辅助栈在新入值更小时 插入当主栈弹出元素时,判断是否是辅助栈栈顶 若是 那么辅助栈同步弹出class min_stack{private: stack<int> S; stack<int> S_min;public: void push(int a) { if (this->S_min.empty() || a <= S_min.top()) //当且仅当新入..原创 2020-07-13 19:27:16 · 134 阅读 · 0 评论 -
动态规划 二叉搜索树的种类
【问题描述】给定从1到n的n个编号的节点,问这些节点可以构成多少种不同的二叉搜索树?当n=1时,只有1种当n=2时候,有2种以1为根节点 以2为根节点当n=3时,有3大类,共5种以1为根节点 以2为根节点 以3为根节点【求解思路】对于1到n个节点,其最终的二叉搜索树的种类可以分为n大类;即以1为根节点以2为根节点以3为根节点........原创 2020-01-06 15:36:25 · 734 阅读 · 0 评论 -
算法 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:——双栈模拟,stack1为实际数据栈,satck2则存放各阶段的最小值(倒三角)——核心问题 解决掉多个相同最小值的情况——(关键步骤stack出栈时,min值的问题 判断stack1栈顶和stack2栈顶是否相等)class Solution {public:...原创 2019-02-22 23:33:55 · 164 阅读 · 0 评论