自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单调栈01(leetcode739/496/503)

是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。遇到大于当前栈顶元素的,记录结果并弹出已记录结果的元素。- 2 ,用加粗斜体标识,nums2 = [1,3,4,第二个 1 的下一个最大的数需要循环搜索,结果也是 2。如果不存在下一个更大元素,那么本次查询的答案是。- 4 ,用加粗斜体标识,nums2 = [1,3,不存在下一个更大元素,所以答案是 -1。不存在下一个更大元素,所以答案是 -1。下一个更大元素是 3。第一个 1 的下一个更大的数是 2;

2024-07-07 15:56:58 876

原创 动态规划13(leetcode647/516)

子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。由递推公式可知是由左下角推出,因此由下到上,由左到右遍历。,找出其中最长的回文子序列,并返回该序列的长度。一个可能的最长回文子序列为 "bbbb"。三个回文子串: "a", "b", "c"是字符串中的由连续字符组成的一个序列。是正着读和倒过来读一样的字符串。,请你统计并返回这个字符串中。

2024-07-05 16:42:02 358

原创 动态规划12(leetcode115/583/72)

判断子序列判断s是否为t的子序列。不同子序列s在t中出现的个数}else{两字符串的删除操作找到word1和word2相同的最小步数,可以删除} else {编辑距离word1转成word2的最小步数。增(同删)、删、换}else{

2024-07-05 09:35:17 380

原创 动态规划11(leetcode1143/1035/53/392)

但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。dp[i][j] 仍然是求公共子序列最大长度,最后要判断的是最长公共子序列的长度是否等于len1.dp[i][j]:截止到下标为 i-1,j-1 的最长公共子序列长度为dp[i][j]公共子序列,顺序不能变,可以不连续。

2024-07-03 19:43:01 1038

原创 动态规划10(leetcode300/674/718)

尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。内层for循环,j < i,j为该序列倒数第二个。dp[i]:以i为结尾的序列最大长度为dp[i]最长连续递增序列是 [1,3,5], 长度为3。dp[i][j]:以i-1,j-1为结尾的最长。长度最长的公共子数组是 [3,2,1]。,并返回该序列的长度。

2024-07-02 14:35:25 238

原创 动态规划09(leetcode188/309/714)

在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。在此处买入 prices[4] = 4。

2024-07-01 15:46:46 969

原创 动态规划08(leetcode121/122/123)

随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3。dp[i][1]:第i天持有这个股票所得的最多现金。dp[i][0]:到第i天,1次都不持有。

2024-06-30 18:11:23 847

原创 动态规划07(leetcode198/213/337)

一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。递推公式:res[0](不偷当前) = 左孩子(偷或不偷的max)+右孩子(偷或不偷的max)你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。同时,相邻的房屋装有相互连通的防盗系统,

2024-06-29 15:24:50 521

原创 动态规划06(leetcode322/279/139)—完全背包

dp[i]:长度为i的字符串,若能用wordDict中的单词组成,dp[i]为true。要求最小值,所以除了dp[0]=0外,其余初始化为Integer.MAX_VALUE。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。求的是硬币数,所以 dp[j-coins[i]]+1;与单词顺序有关,所以用排列,先背包后物品。,表示不同面额的硬币;与顺序无关,用组合,遍历先物品后背包。你可以认为每种硬币的数量是无限的。

2024-06-25 11:15:26 680

原创 动态规划05(leetcode518/377爬楼梯进阶)—完全背包

每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢?请你计算并返回可以凑成总金额的硬币组合数。输入共一行,包含两个正整数,分别表示n, m。题目数据保证结果符合 32 位带符号整数。题目数据保证答案符合 32 位整数范围。此题求排列,所以先遍历背包,再遍历物品。请注意,顺序不同的序列被视作不同的组合。表示不同面额的硬币,另给一个整数。输出一个整数,表示爬到楼顶的方法数。假设每一种面额的硬币有无限个。物品可重复选取,是完全背包问题。求排列,先背包,再物品。

2024-06-24 15:14:46 770

原创 动态规划04(leetcode1049、494、474)

其他满足题意但较小的子集包括 {"0001","1"} 和 {"10","1","0"}。仍然是01背包问题,只是容量有两个考虑的维度,dp[i][j]:放进0容量为i,1容量为j的背包的物品最大数量为dp[i][j]最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4。组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],dp[j]:得到正数综合为j的种数dp[j]组合 2 和 1,得到 1,所以数组转化为 [1,1,1],

2024-06-23 14:00:26 578

原创 动态规划03(二维01背包,一维01背包,leetcode416)

转化为01背包问题:计算出数组总和为sum,设置背包容量为sum/2。判断能否装满容量为sum/2的背包。dp[i][j]:0~(i-1)中的物品任放,放进容量为j的包 的最大价值。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。初始化:为避免答案被覆盖,所以均初始化成0.结论:dp[j]:容量为j的背包能装的最大价值为dp[j]状态转移方程:dp[i][j]= max(不放i,放i)数组可以分割成 [1, 5, 5] 和 [11]。原因:这样可以避免物品重复放入背包。

2024-06-22 15:13:20 330

原创 动态规划02(Leetcode62、63、343、96)

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。那么从左上角到右下角将会有多少条不同的路径?网格的左上角 (起始点在下图中标记为 “Start” )。网格的左上角 (起始点在下图中标记为 “Start” )。区别:本题在初始化和遍历过程中增加障碍物的条件判断即可。1. 向右 -> 向右 -> 向下 -> 向下。2. 向下 -> 向下 -> 向右 -> 向右。返回满足题意的二叉搜索树的种数。3x3 网格的正中间有一个障碍物。

2024-06-22 13:54:37 581

原创 动态规划01(leetcode509,70,746)

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。F(n) = F(n - 1) + F(n - 2),其中 n > 1。开始,后面的每一项数字都是前面两项数字的和。动态规划问题是的每个状态都是由前一个状态推导来的。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。动规五部都写在代码注释中了。请你计算并返回达到楼梯顶部的最低花费。你将从下标为 1 的台阶开始。

2024-06-11 16:58:19 492

原创 路由基础配置(Vue2)

网页层次:如:登录页 /login首页架子 /首页 - 二级 /home分类页 - 二级 /category购物车 - 二级 /cart我的 - 二级 /user搜索页 /search搜索列表页 /searchlist。

2024-06-10 23:22:13 233

原创 贪心算法06(leetcode738,968)

4. 四种情况:(1)左右孩子都是“1”,则自己是“0”(2)左右孩子之一是“0”,则自己是“2”(3)剩下的情况(任一孩子是“2”),则自己是“1” //(4)本应在root的上一个节点放监控,但root没有上一个,该情况在main()函数中处理。从后往前遍历,若两两不符合递增,则前一位数值-1,并将start(‘9’开始的下标)设为后一位的index。3. 每个节点的三种状态:(0)无覆盖(1)有覆盖,无放监控(2)放监控。2. 贪心:叶子节点的父节点放监控,最大范围的监控。

2024-06-10 22:49:53 549

原创 贪心算法05(leetcode435,763,56)

像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。划分结果为 "ababcbaca"、"defegde"、"hijhklij"。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。移除 [1,3] 后,剩下的区间没有重叠。返回一个表示每个字符串片段的长度的列表。表示若干个区间的集合,其中单个区间为。

2024-06-09 17:04:24 543

原创 贪心算法04(leetcode860,406,452)

编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。因此 [[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]] 是重新构造后的队列。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。

2024-06-09 14:58:07 613

原创 贪心算法03(leetcode1005,134,135)

从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。以这种方式修改数组后,返回数组。

2024-06-09 13:45:00 746

原创 贪心算法02(leetcode122/55/4)

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。如果当前覆盖走到尾了,记录的下一个覆盖范围也未到尾,则进入下一个覆盖范围继续搜索,res++可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。步,然后跳 3 步到达数组的最后一个位置。

2024-05-29 21:30:53 662

原创 贪心算法01(leetcode455/376/53)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3)。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。,这是能让孩子们满足胃口的饼干的最小尺寸;连续子数组 [4,-1,2,1] 的和最大,为 6。

2024-05-27 18:32:02 485

原创 回溯算法06(总结+leetcode332,51,37)

画树形图分析题目用途:回溯算法是用 递归实现的多重for循环。(当有用多重for循环暴力求解的想法时,就考虑用回溯)效率:本质是穷举,效率低,可剪枝提高效率回溯三部曲1. 回溯函数参数。——一般nums[],(看情况使用startIndex,target)2. 终止条件。——控制for循环层数3. 单层遍历过程。——处理节点,backTracking(),回溯去重:题目的数据中有重复元素,就考虑“树层去重”,使用若可排序则用used[]数组,否则用HashSet剪枝。

2024-05-25 13:06:18 241

原创 回溯算法05(leetcode491/46/47)

1. 根据题目要求看是否需要排序2.树层去重(同一层递归):1)可排序,用used[]数组记录used[i]要回溯2) 不可排序,用HashSet记录!不用回溯,因为每层新建3.元素不重复取(树枝,下一层递归)4.continue本层递归其他数还可往后取。

2024-05-24 00:27:57 996

原创 回溯算法04(leetcode93、78、90)

递归终止条件:1.符合要求的地址,收进结果集 2.不符合要求的return。若nums[i]==nums[i-1] && used[i-1]==false时,就是需要去重了。注意:回溯过程中 stringB.delete(start+num,i+num+2)的理解。参数:字符串,切割位,已满足要求的段数。,其中可能包含重复元素,请你返回该数组所有可能的。,用以表示一个 IP 地址,返回所有可能的。返回的解集中,子集可以按。给定一个只包含数字的字符串。返回该数组所有可能的。

2024-05-22 22:15:02 789

原创 回溯算法03(leetcode39/40/131)

2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。2. 递归时,起始下标不用 i+1。因为元素可以重复选取。如果至少一个数字的被选数量不同,则两种组合是不同的。关键:采用used数组标记,避免相同元素作为起始元素。理解题意:集合不能重复,但集合中可以有数值相同的元素。中的每个数字在每个组合中只能使用。7 也是一个候选, 7 = 7。,并以列表形式返回。中可以使数字和为目标数。对于给定的输入,保证和为。解集不能包含重复的组合。中所有可以使数字和为。所有可能的分割方案。

2024-05-20 21:53:46 478

原创 回溯算法02(leetcode216、17)

backTracking函数中n下标:涉及不同的集合,每个集合取一个元素,所以n不是各个集合中的下标,而是遍历题目传入的数字字符串的。backTracking函数中start下标:在同一个集合中的下标,记录下标,不重复获取元素。2.可获取的元素个数,下标越靠后,可获取的元素越少。该列表不能包含相同的组合两次,组合可以以任何顺序返回。多重循环就考虑使用回溯法,回溯法通过递归实习多重for循环。多重循环就考虑使用回溯法,回溯法通过递归实习多重for循环。的字符串,返回所有它能表示的字母组合。

2024-05-16 17:33:56 274

原创 回溯算法01(Leetcode77)

本题中对结点的处理就是将节点加入path中,回溯的时候再弹出。用回溯算法穷举所有集合。

2024-05-11 15:18:23 265

原创 二叉树09(leetcode669, 108, 538)

改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。注意:本结点数值不符合区间要求时,其孩子结点仍可能符合,因此注意终止条件。右中左的顺序遍历,则问题转化为:当前数值为前面数值加上本数值的累加和。通过修剪二叉搜索树,使得所有节点的值在。给你二叉搜索树的根节点。

2024-05-08 19:08:41 815 1

原创 二叉树08(leetcode235, 701, 450)

中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。根据二叉搜索树特性遍历,递归返回值返回给上层结点的对应孩子。返回插入后二叉搜索树的根节点。

2024-04-30 13:59:31 719 1

原创 二叉树07(leetcode530,501,236)

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(关键:pre指针和cur指针的移动关系。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。左右子节点向中间结点返回递归处理的结果。给你一个含重复值的二叉搜索树(BST)的根节点。差值是一个正数,其数值等于两值之差的绝对值。仅遍历一次,关键:及时跟新maxCount。直观想法是从下往上遍历,找公共祖先。(即,出现频率最高的元素)。的最近公共祖先是节点。

2024-04-27 16:44:29 765

原创 二叉树06(leetcode654,617,700,98)

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 空数组,无子节点。

2024-04-25 15:33:39 1045 1

原创 二叉树05(leetcode513,112,113,106)

3. 在中序数组中找到上述根结点的下标,作为切割点。(因此开始前可用Map保存中序数组(值,下标))单层递归中,先左后右,保证了返回最左边的节点。法二:递归法(对遍历顺序无要求,因为不需要对中结点处理)的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。等于目标和的根节点到叶节点路径如上图所示。2. 取后序数组的最后一个元素为 根节点。5. 切割后序数组,得到左后序和右后序。迭代法,主要回顾一下遍历的写法。路径总和等于给定目标和的路径。是指没有子节点的节点。

2024-04-25 12:16:43 925 1

原创 二叉树04(leetcode110/257/404)

递归,后序遍历(中间收集左右子节点的高度进行判断)。在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。回溯,参数使用引用,更方便展示回溯效果。递归,前序遍历(路径从根节点往后指)。给定一个二叉树,判断它是否是平衡二叉树。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。,返回所有左叶子之和。

2024-04-22 19:57:08 418

原创 二叉树03(leetcode104,559,111,222)

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若遇到以该结点为根结点的子树是完全二叉树,则可返回该完全二叉树的节点总数。后序遍历求结点的高度,题目要求的最大深度就是根节点的高度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。这题有多种解法,层序遍历,递归(后序,前序)均可。叶子节点是指没有子节点的节点。

2024-04-21 16:08:33 614 1

原创 二叉树02(leetcode102,226,101)

适合用前序或者后序遍历;不适于用中序遍历,因为中序遍历反转节点后会导致某一边重复被反转,而另一边没有被翻转。在本题中,要判断左右孩子的信息,才能供本节点判断左右是否对称。此处选择后序遍历,后序遍历可收集子节点信息给上级。3. 单层递归逻辑。交换每个节点的左右子节点。1. 确定返回值和传入参数。,翻转这棵二叉树,并返回其根节点。关键:使用队列,逐层节点弹出处理。2. 确定终止条件。给你一个二叉树的根节点。, 检查它是否轴对称。给你一棵二叉树的根节点。

2024-04-20 12:41:25 364 1

原创 二叉树01(leetcode144,145,94)

方法:待处理结点入栈后统一加入null节点,则在出栈时遇到Null节点就知道下一个节点待处理了。上面的迭代法中前中后序遍历的写法不统一,这里进行统一改造使其写法统一。对节点的处理:将值存入result数组,将右结点、左节点入栈。(可以在写的过程补充)节点访问顺序和处理顺序相同(先访问根节点,先处理根节点)注意:由于中序遍历里,节点访问顺序与节点处理顺序不同。1. 将左右节点入栈顺序调转,此时变为“中右左”思路同上,只需更改递归函数的单层递归逻辑顺序即可。前序、后序操作仅需要更改元素入栈顺序即可。

2024-04-18 19:25:33 375

原创 栈与队列03(leetcode239、347)

push():value与队列前面的元素比较,将在value之前且小于value的元素弹走。pop():移动窗口时,若头部为当前最大值,则弹走。(不是最大值的,在push就已经弹走了)的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。2. 建大小为k的小顶堆,依次遍历map。用小顶堆维护前k个频次最高的元素。1. 先用map存储(key,value),(数字,次数)滑动窗口的位置 最大值。3. 最后小顶堆倒序存储前k个频次最高的元素。

2024-04-15 20:18:27 783 1

原创 栈与队列02(leetcode22、1047、150)

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。由于栈后进先出,所以栈顶元素就是前一个元素,比较当前元素和栈顶元素。用栈存储数字,遇到非数字的弹出栈中两个数进行操作。

2024-04-14 22:01:56 883 1

原创 栈与队列01(leetcode232、225)

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(栈的顶部就是队列的尾部,获取队列尾部元素即可。直接利用现有的pop()方法获取,再将元素。peek() :头部元素获取。top() :栈头部元素获取。关键:pop()实现。关键:pop()实现。

2024-04-14 19:11:32 393 1

原创 字符串1(leetcode344,541,卡码网54,leetcode151,卡码网55)

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。是由非空格字符组成的字符串。

2024-04-10 19:38:48 904 1

空空如也

空空如也

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

TA关注的人

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