LeteCode刷题
来盘海参炒面不要面
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题|数据结构归类|队列各算法题合辑(持续补充)
1、#232、用栈实现队列1、题目难度:简单使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 fa原创 2020-08-07 08:51:03 · 519 阅读 · 0 评论 -
LeetCode刷题|数据结构归类|栈各算法题合辑(持续补充)
1、#1047删除字符串中所有相邻重复项(1)、题目难度:简单给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项原创 2020-08-04 20:21:46 · 353 阅读 · 0 评论 -
#991双倍或递减得到某数的最小操作数
#991双倍或递减得到某数的最小操作数一、题目难度:中等在显示着数字的坏计算器上,我们可以执行以下两种操作:双倍(Double):将显示屏上的数字乘 2;递减(Decrement):将显示屏上的数字减 1 。最初,计算器显示数字 X。返回显示数字 Y 所需的最小操作数。示例 1:输入:X = 2, Y = 3输出:2解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.示例 2:输入:X = 5, Y = 8输出:2解释:先递减,再双倍 {5 -&g原创 2020-08-04 16:18:54 · 364 阅读 · 0 评论 -
#1518空瓶换酒问题
一、题目难度:简单小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例 1:输入:numBottles = 9, numExchange = 3输出:13解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以最多能喝到 9 + 3 + 1 = 13 瓶酒。示例 2:输入:numBottles = 15, numExchange = 4输出:19解原创 2020-08-04 14:33:48 · 240 阅读 · 0 评论 -
LeetCode刷题|数据结构归类|数组各算法题合辑(持续补充)
1、大小为 K 且平均值大于等于阈值的子数组数目1、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6 。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。原创 2020-07-19 15:14:08 · 237 阅读 · 0 评论 -
LeetCode刷题|算法归类|贪心算法介绍及各算法题合辑(持续补充)
贪心算法一、介绍贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果二、案例假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号思路分析:如何找出覆盖所有地区的广播台的集合呢,使用穷举法实现,列出每个可能的广播台的集合,这被称为原创 2020-07-19 15:12:41 · 268 阅读 · 0 评论 -
LeetCode刷题|算法归类|回溯算法介绍及各算法题合辑(持续补充)
一、算法介绍回溯算法就是把问题的解空间转化为图或树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。基本思想类同于:图的深度优先搜索和二叉树的后序遍历详细的描述则为:回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法的基本行为是搜索,搜索过原创 2020-07-19 15:10:08 · 213 阅读 · 0 评论 -
LeetCode刷题|算法归类|滑动窗口介绍及各算法题合辑(持续补充)
一、算法介绍滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。二、LeetCode题1、#1343大小为 K 且平均值大于等于阈值的子数组数目1、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2原创 2020-07-19 15:09:13 · 254 阅读 · 0 评论 -
LeetCode刷题|算法归类|动态规划介绍及算法题合辑(持续补充)
一、算法介绍1、介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。 ( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )动态规划可以通过填表的方式来逐步推进,得到最优解.2、适用原创 2020-07-19 15:07:57 · 195 阅读 · 0 评论 -
#1343大小为k且平均值大于等于阈值的子数组数目
一、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6 。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。示例 2:输入:arr = [1,1,1,1,1原创 2020-07-19 14:30:50 · 212 阅读 · 0 评论 -
#1144递减元素使数组呈锯齿状
一、题目难度:中等给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。如果符合下列情况之一,则数组 A 就是 锯齿数组:每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > …或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < …返回将数组 nums 转换为锯齿数组所需的最小操作原创 2020-07-19 14:30:18 · 135 阅读 · 0 评论 -
LeetCode刷题|贪心算法|#376摆动序列
LeetCode刷题|贪心算法|#376摆动序列一、题目如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子原创 2020-07-08 15:23:39 · 277 阅读 · 0 评论 -
LeetCode刷题|贪心算法|#1007 、行相等的最少多米诺旋转
LeetCode刷题|贪心算法|#1007 、行相等的最少多米诺旋转1、题目在一排多米诺骨牌中,A[i] 和 B[i] 分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的 —— 该平铺的每一半上都有一个数字。)我们可以旋转第 i 张多米诺,使得 A[i] 和 B[i] 的值交换。返回能使 A 中所有值或者 B 中所有值都相同的最小旋转次数。如果无法做到,返回 -1.示例 1:输入:A = [2,1,2,4,2,2], B = [5,2,6原创 2020-06-30 22:58:49 · 231 阅读 · 0 评论 -
LeetCode刷题|#910 最小差值
#910 最小差值1、题目给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。在此过程之后,我们得到一些数组 B。返回 B 的最大值和 B 的最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例 3:输入:A = [1,3,6], K = 3输出:3解释:B = [4,6,原创 2020-06-30 18:26:51 · 378 阅读 · 0 评论 -
LeteCode刷题|动态规划(二分法、贪心、双指针)|#392判断子序列
LeteCode刷题|动态规划(二分法、贪心、双指针)|#392判断子序列1、题目给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = “abc”, t = “ah原创 2020-06-30 16:01:10 · 292 阅读 · 0 评论