自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 动态规划-正则表达式匹配(10)(保留有一个问题)

题目: 示例:1.输入:s = “aa”;p = “a”;输出:false;解释:"a"无法匹配"aa"整个字符串输入:s = “aa”p = “a*”输出:true解释:因为"* "可以匹配零个或多个前一个元素,故"a* “可以匹配"aa”输入:s = “ab”p = ".* ”输出: true解释: ".* " 表示可匹配零个或多个(’*’)任意字符(’.’)思路- -动态规划- - 自顶向下:一、首先考虑自顶向下的算法,因为自顶向下算法

2020-09-09 18:30:44 140

原创 关于树相关题目的算法技巧总结(常更新)

一、数据结构- - 树de 特点(本文以二叉树的相关题目为重点)树整体分为二叉树与N叉树,二叉树题目即是N叉树题目的特殊情况,整体解决思路是一致的,区别在于对于当前结点的子结点的描述不同,因为二叉树仅分左右,而N叉树的情况是考虑其所有孩子(int v : node.children)。树的一个重要特点就是具有递归性,所以拿到数的相关题目时,就要首先考虑递归,然后结合所涉及题目具体的要求,往流程中间添加其他步骤。我们可以设计一个二叉树解题框架 ,二叉树中的框架思维十分明显,而且大部分算法技巧,其实

2020-08-31 20:08:30 344

原创 从根到叶的二进制数之和(1022)

题目: 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以 10^9 + 7 为模,返回这些数字之和。示例:思路分析:一、本题需要得到从根到叶的结点值所组成的二进制数,如何得到,这一步解题思路可以参考二叉树的所有路径,当我们知道如何构造一条

2020-08-31 11:34:31 369

原创 单值二叉树(965)

题目: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例:1.2.思路分析:1.当拿到关于树的题目时,首先想到的就是递归和遍历,将树的前后节点进行比对,一旦有不等者,直接返回false,此方法下我建立了一个list,将遍历所得结点放入list,进行前后比较。Code — 1class Soultion { List<Integer> list = new LinkedList<>(

2020-08-30 16:16:27 121

原创 二叉搜索树的范围和(938)

题目: 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例:思路分析:一、按照题目所给为BST,首先想到的是按照遍历,将其所有结点全遍历进列表之中,然后上一个循环来将列表中的所有值循环一遍,写完之后,我发现这是个笨办法,因为提交了以后就超过时间限制了,所以就要想办法,精简程序。二、依旧是遍历每个结点,在遍历中就将符合范围内的结点加入求和变量之中。三、直接分大方向,当根节点值小于左范围时,直接进入右子树进行判断,可以节省在另左子树上浪

2020-08-30 15:04:33 121

原创 递增顺序查找树(897)

题目: 给一个树,请你 按中序遍历 重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例:输入:输出:思路分析:一、大思路就是先中序遍历获得一个升序列表,然后将所获列表转换成题目所要求形式的二叉树。二、在主函数中通过循环得到一棵树,具体解析在代码中。算法复杂度分析:1.时间复杂度O(N):需要遍历树的所有结点且只遍历一次。2.空间复杂度O(N):递归调用栈辅助空间。Codeclass Solution { List<Integer>

2020-08-29 17:17:48 114

原创 叶子相似的树(872)

题目: 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。示例:思路分析:1.题中之意是分别获取两棵不同的树的叶节点,然后比较两组叶节点的大小顺序是否完全一致。2.故要做的工作只有两步,首先获取叶节点,其次进行比较即可。3.主函数中一个巧妙的地方在于先简单的判断一下两个列表的长度大小是否相等,否则可以直接返回false即可。算法复杂度分析:1.时间复杂度:O(N),需要遍历两棵树树的所有结点且只遍历一次。2.空间复杂度:O(N),递归调用辅助栈空间。Co

2020-08-29 15:09:00 74

原创 二叉搜索树结点最小距离(783)

题目: 给定一个二叉搜索树的根节点 root,返回树中任意两节点的差的最小值。示例:思路分析:一、题中给定了BST,故由BST树的特性可知对其进行中序遍历可以得到一个升序数列。二、而最小值必定出现在升序数列中前后无缝衔接的两数之间,不可能跨数取得最小值,故将两树相减后的值存入新数列之中,最后结果进行返回即可。Codeclass Solution { List<Integer> list = new LinkedList<>(); List<Integer&gt

2020-08-29 11:13:26 75

原创 二叉搜索树中的搜索(700)

题目: 给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。示例:当给定树和值时:应当返回如下所示:思路分析:1.当题目给定二叉搜索树时,就要想到BST宝宝结点左小右大的特性,利用这个特性进行题目求解。2.将给定值同根结点值大小进行判断,如果大于则去左子树,如果小于则去右子树,如果等于,直接返回当前树。Code-递归:class Solution { public TreeNode searc

2020-08-29 10:35:26 135

原创 最长同值路径(687)

题目: 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。示例:1.2.思路分析:一、最长同值路径分为两种情况1.1 以root为起点,经过左子树或右子树,如上图(2)所示。1.2 不是以root为起点,root是中间点,如上图(1)所示。二、但是如果我们设计的递归函数helper,递归计算以每一个节点为起点的最长同值路径(只计算了情况1的结果),如下所示:ps:橘色数字代表以该结点为

2020-08-28 20:59:49 187

原创 二叉树中第二小的结点(671)

题目: 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。示例:1.2.思路分析–递归1一般关于二叉树的题首先考虑递归,简单方便。2.有关第二小的数字,我们可以定义两个变量分别用来存放第一小数字first和第二小数字second。3.定义一个count计数器,当能记到第二小的数字时,说明出

2020-08-27 21:36:18 124

原创 修剪二叉搜索树(669)

题目: 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点示例:1.2.思路分析一、题中给出的是 BST(二叉搜索树) ,其特点是给定当前结点,其左宝宝小于该结点,右宝宝大于该结点。利用该特点就可以进行分情况讨论二、从根结点开始修剪:2.1如果根结点的值小于给定的L,那么该结点的左子树的所有结点值只会比L更小,所以直接返回右子树进行递归判断即

2020-08-27 17:08:37 69

原创 两树之和IV-输入BST(653)

题目: 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。示例:1.2.思路分析一----HashSet通过dfs遍历树的每个结点,查询哈希表内是否有与当前结点值加和后为目标值的元素,如果有,直接返回true,如果没有将当前值加入哈希set中,接着遍历该结点的宝宝结点进行递归查询。算法复杂度分析:1.时间复杂度:O(N),最坏情况下,需要遍历全树所有结点。2.空间复杂度:O(N),最坏情况下,HashSet空间复杂度为O(N),递

2020-08-27 11:21:49 112

原创 二叉树的层平均值(637)

题目: 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例: 思路分析一、由题目知,要求层平均值,故需要对二叉树进行层次遍历,以及队列的使用。二、要得到最后结果,考虑需要用到的变量等,需要一个变量sum盛装某曾所有结点值之和;需要一个变量count记录某曾所有结点个数等。三、借助队列实现二叉树的层次遍历:1.初始化一个队列,将根结点入列;2.根据队列的size实现本层的遍历;3.每次出队一个结点,记录当前结点的值(融入sum),而后将该结点的左右宝宝入队;4.将2、3循环执行,

2020-08-26 16:42:28 121

原创 合并二叉树(617)

题目: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例:思路分析–递归一、合并两棵树时,其中不但涉及到结点的更新,也涉及到链接的更新,最简便的方法就是选定一棵主树,让另外一棵树归并到主树上。二、递归的下沉阶段在两棵树中不断搜索,上浮阶段不断更新结点左右子链接,然后更新结点的值。三、递归放回值为更新完成的

2020-08-26 15:05:36 109

原创 根据二叉树创建字符串(606)

题目: 需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。 空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例:1.2.思路分析:一、从题目中可以获取重点信息,在前序遍历中,如果当前结点为父结点的右宝宝,且其父结点的左宝宝为null时,关于左宝宝的括号是不能省略的,而左宝宝存在但右宝宝不存在或是左宝宝和右宝宝都不存在时,可以直接略过,对于该父结点直接进行闭括号,故,基于这一特殊情况,我们需要专门建立一个结点变量

2020-08-26 11:11:44 96

原创 N叉树的后序遍历(590)

题目: 给定一个 N 叉树,返回其节点值的后序遍历。示例:思路–迭代:1.迭代方法中必定会涉及一个大循环,同时有必要借助栈,简便方法即借助一个栈即可完成目标任务。2.分析 栈 在此题中的用法:以上图为例,1先进栈,然后出栈,遍历该结点的子结点为3、2、4,然后按照栈的特点,先进后出,则4先出,然后遍历其宝宝结点,若宝宝结点还有宝宝结点,则继续向下一层遍历(原理同于由1向3、2、4迭代)。直接将值加入res正好是相反的顺序,故需要进行翻转,或是在把stack中pop出来的值直接addFirst加入r

2020-08-25 10:31:35 107

原创 N叉树的前序遍历(589)

题目: 给定一个 N 叉树,返回其节点值的前序遍历。示例: 思路分析-迭代:一、总的思想即是在处理完某个结点后,如何快速准确处理其左边第一个宝宝结点。二、可以考虑层序遍历,层序遍历会借助队列,初始时刻根节点入列,此后如果队列非空,就出列一个结点,并将其子结点从左到右依次入列,但是这种方式下每次从队首出列的结点可能是某个结点的左宝宝,也有可能是某个结点的右宝宝(看上文一、中加粗斜线)。此时距离前序遍历还差距离,此时看一下队尾,如果结点每次都从队尾出列,然后再将子结点从左到右入列,我们可以得到 根→右→

2020-08-24 10:36:19 121

原创 另一个树的子树(572)

题目: 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例:示例1-示例2-思路分析:一、题中所给s中是否包含t,意思是问s中是否存在一棵子树与t完全相同(包括树的结构完全一致以及每个结点值都相等)。二、辅助函数中:如何判断两棵树是否完全相同,需要引入辅助函数isSameTree(TreeNode p, TreeNode q)进行判断,可以参考100.相同的树的思

2020-08-21 10:29:44 79

原创 二叉树的坡度(563)

题目: 给定一个二叉树,计算整个树的坡度。名词解释:1.一个树的某结点的坡度:该结点左子树的结点之和和右子树结点之和的差的绝对值。空结点的的坡度是0。2.整个树的坡度:全树所有结点坡度之和。示例:思路分析:一、计算整棵树的坡度之和,则我们可以涉及递归函数计算每个结点的坡度1.首先,计算每个结点的坡度,就要先计算该结点的左子树结点之和和右子树结点之和。2.左子树结点之和 = 左子树根节点值 + 左子树的左子树的结点之和 + 左子树的右子树的结点之和。3.继续递归分解下去,直到分解到空树,空

2020-08-19 16:18:24 238

原创 N叉树的最大深度(559)

题目: 给定一个 N 叉树,找到其最大深度。相关名词解释:1.最大深度是指从根节点到最远叶子节点的最长路径上的 节点总数 。示例:思路分析:一、参考 二叉树最大深度 的题解,故N叉树的最大题解是关于树问题的一个通解,其本质都相同,即普遍形式。二、本题我的解是按照BFS迭代的方式进行求解,按照层次遍历,逐层迭代。Code-BFS迭代:class Solution { public int maxDeoth(Node root) { if (root == null) { retu

2020-08-19 10:44:24 111

原创 二叉树的直径(543)

题目: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。题目中涉及概念解析:1.二叉树的直径长度: 一棵二叉树的直径长度是任意两个结点路径长度中的最大值。2.路径长度定义 :两结点之间的路径长度 = 该两结点之间边的数目。思路分析:一、根据题目可以直观想到将根结点的左右子树的最大深度相加即可,但是可以考虑一个特殊例子,如:某二叉树,其左子树为一个高度100的平衡二叉树,而右子树为空,故正确想法应该是每一个结点到达其左

2020-08-17 17:03:03 164

原创 把二叉搜索树转换为累加树(538)

题目: 给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。示例:思路:1.根据题意可知输出结果应为:13=13+(0)5=5+(13+0)2=2+(5+13+0)2.由1等号左侧可知产生了降序序列,利用BST中序遍历(左->根->右)得到升序数组的特性,可以使用反中序遍历(右->根->左),然后进行遍历直接可得到一棵新树。算法复杂度分析1.时间复杂度

2020-08-16 17:45:22 54

原创 二叉搜索树的最小绝对差(530)

**题目:**给定一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:思路:一、题目给定一棵BST,故对其进行中序遍历即可得到一个升序序列,利用BST的特性,进行遍历计算即可。需要一个整数类型 res 记录最小绝对差,同时需要 pre 来记录前移结点值进行数学运算。二、中序遍历流程中1.首先判断结点root == null 之间的关系,若为空,则直接返回。2.进而进行中序遍历,即一直寻找结点的左宝宝,直到找到最左边的宝宝后开始进行数学运算,即进入if作出判断。

2020-08-16 11:46:52 137

原创 二叉搜索树中的众数(501)

题目: 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。

2020-08-15 17:50:33 79

原创 左叶子之和(404)

题目: 计算给定二叉树的所有左叶子之和示例:思路分析–递归:1.遍历二叉树,每次对根结点进行判断其是否有左叶子结点即可。2.遍历方法可以采用前序 / 中序 /后序 /层次遍历。3.算法步骤的关键点在于如何判断一个结点是否为左叶子结点,在确定该结点既无左子结点,亦无右子结点时,可以确定该结点为叶子结点,但无法确定该结点是否为左叶子结点,此时就要通过该结点的父结点进行确定性判断,该父结点不为空,且父结点的左孩子(即上文提到的该结点)不为空,且左孩子的左孩子与右孩子皆为空,故该结点为左叶子结点。C

2020-08-14 10:57:15 88

原创 二叉树的所有路径(257)

题目: 给定一棵二叉树,返回所有根节点到叶子结点的路径。思路分析:(1)从树的根结点开始遍历二叉树,判断该结点是否是非空结点,若不是,加入路径,继续向下判断是否是叶子结点。(2)判断该结点是否是叶子结点,如果是叶子结点,说明已经得到一条完整路径,则将该路径加入路径集合;若不是叶子结点,则继续向下判断,递归其左右子树继续构建该路径。算法复杂度分析:(1)时间复杂度:整个流程需遍历二叉树的每一结点且只遍历一次,故时间复杂度为O(N)。(2)空间复杂度:递归需要使用栈辅助空间,故空间复杂度为O(N)。

2020-08-13 19:05:29 175

原创 二叉搜索树的最近公共祖先(235)

题目: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。名词解释:最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。示例:思路—递归:根据题意可以得知,要求从根节点为root的树返回p、q的最近公共祖先,使用递归方法,如果p、q均小于root,则应该由root的左子树返回p、q的最近公共祖先;如果p、q均大于root,则应该从root的右子树返回p、q的最近公共

2020-08-13 11:37:33 102

原创 翻转二叉树(226)

题目: 翻转一棵二叉树。举例:思路1-递归:使用递归方法进行解题,

2020-08-11 16:44:42 98

原创 路径总和(112)

题目: 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。相关名词解释:叶子结点:指没有左右宝宝的结点举例:思路: 本题判断 是否存在 从根结点root到叶子结点的结点值之和为给定的sum。则可以转换为求解从root.left 或 root.right 开始到叶子结点是否有满足结点值相加满足sum-roo.val的路径,即 hasPathSum(root.left,sum-root.val) || hasPathSum(root.right

2020-08-11 10:25:55 85

原创 二叉树的最小深度(111)

题目: 给定一个二叉树找出其最小深度概念解析:(1)最小深度是指从根节点到最近叶子结点的最短路径上的结点数量。(2)叶子结点是指没有左宝宝也没有右宝宝的节点。思路:一个特例要弄清楚,例如[3, 9],通过该特例弄明白题意1.明确叶子结点的概念,即该结点无左宝宝亦无右宝宝,故在特例中3并不是叶子结点,9才是叶子结点。题目中问根节点到叶子结点的最远距离,故该特例中定不是以1为结果。2.弄明白递归结束条件(1)若root为空时,直接返回0。(2)若root的左右孩子都为空时,则root就是一个叶

2020-08-10 20:01:17 127

原创 判断一棵二叉树是否是高度平衡二叉树(110)

题目: 给定一棵二叉树,判断是否是高度平衡的二叉树概念简介:一棵高度平衡的二叉树是指一棵树的任一节点的左右两棵子树的高度差的绝对值不超过1。思路:本题因能力有限,暂时考虑使用 暴力法 进行求解,即采用 从顶至下 的方法。整体思路是刻画一个获取当前节点最大高度的方法depth(root),然后通过比较该子树的左右子树的最大高度差abs(depth(root.left) - depth(root.right)) 是否小于1来判断此子树是否是二叉平衡树。当这棵树的所有子树都为二叉平衡树时,该树为二叉平衡树

2020-08-10 11:53:04 322

原创 将有序数组转化为平衡二叉树(108)

题目: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。给定有序数组: [-10,-3,0,5,9]。概念详解1.高度平衡二叉搜索树(AVL树)(1)左子树与右子树的高度之差的绝对值不超过1。(2)整棵树中的每棵左子树与右子树都是AVL树。(3)每个节点都有一个平衡因子(balance factor–bf),任一节点的平衡因子是-1/0/1。(每个节点的平衡因子等于右子树的高度减去左子树的高度 )2.AVL树的效率一棵AVL树有N个节点,其高度可以保持在log2N,插入/删除/查找

2020-08-09 17:55:10 971

原创 关于LSTM!

写在前边的话:学习完台湾大学李宏毅有关机器学习深度学习的视频后,作出一点感想和总结。一、什么是RNN?在RNN中,神经元不但可以接受其他神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。并且RNN对于分析序列数据具有很大优势,举个特栗子:比如进行某语言对另一语言的翻译,最后输出的不单单是语句对语句的翻译,更重要的是联系该语句的前后文,使其翻译内容更加精准。二、一般RNN如下图所示(图片来源于课本或网络或台湾大学李宏毅教授的课件内容):其中,x为时刻t的输入,h表示隐藏层状态,则h不仅和

2020-08-04 19:23:35 162 1

原创 关于二叉树的所有遍历问题

本篇文章会逐步更新有关二叉树的便遍历问题,等所有题目更新完后,会出关于树的模板总结!(先放code,以及个别需要注意的步骤,最后做出汇总)给你给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。codeclass Solution: def Print(self, root): if not root: return [] queue = [root] endList = [] while queue: #进

2020-06-12 20:54:35 102

原创 Python104.二叉树最大深度题解

题目: 给定一个二叉树,确定其最大深度。思路: 使用树结构本身就涉及的递归思想,进行求解即可。要把树的所有情况都涉及到,刚开始刷题,所以代码没有什么技巧,就只涉及到最简单的递归以及所有情况的考虑(从根到叶!)code:class Solution: def maxDepth(self, root: TreeNode) -> int; if root == None: return 0 if root.left == None and root.right == None:

2020-05-26 20:31:40 132

原创 python实现101对称二叉树

题目: 给定一个二叉树,检查其是否为镜像对称!思路: 1.要设置一个镜像树,设原树为tree,镜像树为new_tree。2.tree.left.val == new_tree.right.val and tree.right.val == new_tree.left.val,简单来讲就是左子树的左孩子 = 右子树的右孩子,左子树的右孩子 = 右子树的左孩子!code:class Solution: def isSymmetric(self, root: TreeNode) -> bool

2020-05-24 19:46:13 143

原创 python实现100相同的树

判断两棵树是否相同题目: 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路方法: 暴力法,递归+枚举(在这种写法下,不可以写p.val == q.val ,返回True,这样的操作导致树无法展开)code:class Solution: def issameTree(self, p:TreeNode, q:TreeNode) -> bool: if p == None and q == None: return

2020-05-21 18:08:27 99

原创 python-下一个最大元素I

下一个最大元素题目: 给定两个没有重复元素的数组,nums1和nums2,其中nums1是nums2的子集,找到nums1中每个元素在nums2中的下一个比其大的元素。方法: 暴力法思路:(1)字典dic中key为nums2中的元素,value为nums2中的每个元素的索引。(2)遍历nums1中的元素。(3)对于nums1中的元素,先找出其在nums2中的位置。(4)遍历从此元素开始往后的每一个元素,输出第一个大于此元素的元素,若没有,则返回-1。codeclass Solution:

2020-05-19 16:46:43 95

原创 栈和队列相互实现

栈和队列相互实现题目一 队列实现栈要求:使用队列实现栈的下列操作:push(x),pop(),top(),empty()方法:利用双队列deque实现栈,操作方便,效率较高思路:(1)push()操作,为了保证先进栈的元素一直在栈底,需要将两个队列交替使用,才可满足需求,所以我们在空的队列添加元素,然后将非空队列的元素全部追加到当前队列,然后方便下次添加元素至空队列。(2)pop()操作,在添加元素时,我们已经按照进栈的先后顺序把新进栈的元素放在一个队列的头部,所以出栈时,我们只需找到非空的

2020-05-18 19:47:40 147

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除