力扣每日一题
每日一题
所谓远行Misnearch
心中栽桃树,灼灼映桃花
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
3635. 最早完成陆地和水上游乐设施的时间II
因此对于每种方案,只要找到第二个完成的最早开始时间,即max(第一个设施结束时间,第二个设施开始时间),然后加上第二个项目的持续时间,这样就合理了。找到优化的地方,既然这个时间是max(第一个设施结束时间,第二个设施开始时间),可以发现表达式随着第一个设施结束时间是增大单调不减的,先尝试1的解题方案,要么是先完成陆地设施,然后是水上设施,要么是先完成水上设施然后是陆地设施,所以先找到陆地结束时间最小,再计算水上结束时间最小,即可。反过来,计算水上结束时间最小,再计算陆地结束时间最小,原创 2026-06-03 21:45:02 · 230 阅读 · 0 评论 -
33. 搜索旋转排序数组
【代码】33. 搜索旋转排序数组。原创 2026-05-22 20:31:10 · 33 阅读 · 0 评论 -
1345. 跳跃游戏 IV
但是现在有3种方式,可以从当前位置跳到i+1, i-1, j(arr[i] = arr[j]),我可以理解为一种搜索的方式吗,在每一步搜索过程中统计当从下标0跳到数组最后一个元素的时候,维护最少跳动次数。首先将数组中每个下标视为节点,边的构建则是按照题意得三种操作方式,如果没有从i跳到j,则根据i可以跳掉i+1,或者i-1,能够利用。BFS是按层扩展,第一次抵达终点时就是最少跳数,不需要继续搜索。我们可以理解为一个图,目的是求图的最短路,可以用BFS来解决。,一共最少需要3次跳动,从下标0到4到3到9。原创 2026-05-18 23:06:00 · 506 阅读 · 0 评论 -
目标金额是否能被给定硬币组成或者最少硬币数量
在编程中,判断一个目标金额能否由一组给定的硬币组成,这是一个经典的“硬币找零”或“完全背包”问题。最常用且高效的解决方法是使用动态规划。原创 2026-04-06 14:07:14 · 237 阅读 · 0 评论 -
611.有效三角形的个数
对于a,b,c,我们可以枚举前两个数a,b的下标i,j,然后对于第三个数c的下标k进行二分查找,找出满足条件的k的范围区间,然后累加即可。将j右移一个位置,并不断尝试向右移动k,使得k是最大的满足nums[k] < nums[i] + nums[j]的下标。假设只固定i,则随着j的增加,不等式右侧的nums[i] + nums[j]也是递增的,满足条件的k也是递增的,则可以通过排序使得三条边:a,b,c,中的a + c >b, b+c > a,则只需要判断a+b > c即可。最直观的方法,使用暴力循环。原创 2025-09-26 15:23:53 · 436 阅读 · 0 评论 -
2197. 替换数组中非互质数
因此可以用一个栈进行维护,依次入栈,假设新建来的元素b,与栈中a满足非互质数,则进行替换:出栈,然后将最小公倍数入栈,b所在的位置+1。例如测试用例:[31,97561,97561,97561,97561,97561,97561,97561,97561]知道为什么报错吗,因为假设当前数非互质数,下一个数也是非互质数,则没有连续处理的情况。掌握最小公倍数的实现方法,知道最小公倍数 = 两数绝对值的乘积 / 最大公约数。下面是修改的代码:可能会出现a* b溢出的情况,使用long类型。原创 2025-09-16 21:32:47 · 246 阅读 · 0 评论 -
966. 元音拼写检查器
假设有多个query,可以对wordList进行预处理,因为wordList是固定的。可以这样想,假设给定一个query,我们可以按照上述逻辑进行判断。分析题目,给定的wordlist其实也是一个个的单词,不是很长的字符串。这里对于给定的query,要进行查询。总体时间复杂度O(n+m)。原创 2025-09-15 11:20:39 · 516 阅读 · 0 评论 -
1865.找出和为指定值得下标对
为了找出满足指定值得下标对,可以假设nums1[i]的值为num,从而tot-num就是要从nums2中找的的,可以事先维护一个哈希表,从而直接获取tot-num的出现次数。原创 2025-07-06 23:14:58 · 229 阅读 · 0 评论 -
2311. 小于等于 K 的最长二进制子序列
对于长度大于等于m的情况,最长可能子序列的长度至少是m-1。然后检查长为m的子序列中是否存在小于k的情况,如果存在则最长子序列长度可以是m,反之最长子序列长度为m-1。注意题目中的字符串的子序列是指从一个字符串中删除零个或多个字符后,不改变顺序得到的剩余字符序列。假设数值k的二进制有m位,则确保子序列长度不超过m,同时确保值不超过k。首先直接生成所有可能的子序列并进行检查是不可行的,因为时间复杂度会很高。任何长度超过k的二进制位数的子序列,值必定大于k。substring() 方法返回字符串的子字符串。原创 2025-06-27 11:42:48 · 280 阅读 · 0 评论 -
2016.增量元素之间的最大差值
如何进行优化呢,只需要对j进行遍历,维护i对应的最小值,如果nums[i] > premin, 则满足j > i同时nums[j] > nums[i],并更新最大值,反之则说明当前遍历的值nums[i]小于等于premin,则更新i所对应的最小值。利用双指针求解,维护j > i并未nums[i] < nums[j],维护最大差值。原创 2025-06-16 11:30:22 · 187 阅读 · 0 评论 -
1432.改变一个整数能得到的最大差值
变成最小,如果>1,则将该数位代表的数都变成1,如果该数位已经是1了,则从下一个数位开始,为了最小,应从0开始修改,并注意判断如果都是一样的位数1,则不能修改为0。变成最大,如果<9,则将该数位代表的数都变成9,如果该数位已经是9了,则将下一个数位如此循环。也可以通过枚举的方法,枚举替换的数字,并查看是否可行,然后维护最大最小值。例如num=111,则最大是999,最小值100,最大差值是899。贪心思想,为了得到最大差,想办法变成一个最大的数和一个最小的数。这里有规则,从最高位开始,原创 2025-06-16 11:18:33 · 430 阅读 · 0 评论 -
386.字典序排序
这种方式o(nlogn),直接排序会使用额外o(n)空间存储字符串数组。为了达到o(1)空间,不能使用直接排序。字典序即按照字典的顺序排序,在计算机中两个字符串的大小关系取决于两个字符串从左到右第一个不同字符的ASCII值的大小。字典序实际上是数字的前序遍历。原创 2025-06-11 19:00:51 · 261 阅读 · 0 评论 -
2359.找到离给定两个节点最近的节点
首先肯定要计算节点到各个节点之间的最短距离。由于是有向图因此可以通过循环实现找到节点到其他节点的路径及距离。最后选出里node1和node2最远距离最小的点即可。原创 2025-05-30 12:46:06 · 322 阅读 · 0 评论 -
90.子集||
要求所有可能的子集,不能重复,因此对于相同的数字,要考虑去重,去重的方式就是通过排序,排序后相同的数字相邻,这样进行实现迭代时,若没有选择上一个数,,其当前数字与上一个数相同,则跳过当前生成的子集。递归完成,撤销当前选择,继续其他选择。原创 2025-02-06 23:19:16 · 244 阅读 · 0 评论 -
680.验证回文串||
上面的分析存在漏洞,当l和r所处位置不能构成回文串时,有两种做法,一种是删除l位置的字符,则l++,另一种是删除r位置的字符则r–,当这两种做法至少有一个是回文串则能够继续进行。这里需要涉及删除,因此使用双指针,l和r,假设l不等于r,则l++,同时记录删除字符的个数cnt–,如果第二次遇到l不等于r,则不能成为一个回文串,反之则可以。最多删除一个字符使其成为回文串,首先根据回文串的特点,即两边互相对应。原创 2025-02-03 23:42:55 · 323 阅读 · 0 评论 -
3152.特殊数组||
【代码】3152.特殊数组||原创 2024-08-16 09:32:29 · 165 阅读 · 0 评论 -
3096.得到更多分数的最少关卡数目
前缀和思想,找到规律得的关卡总分数- Alice得分< Alice得分。首先想到用Python暴力实现,但是会超时。原创 2024-07-19 12:35:42 · 304 阅读 · 0 评论 -
3112.访问消失节点的最少时间
从节点0出发到其余点之间的最少访问时间,由于两点之间的无向边就是以时间单位计量的,实际上就是求从节点0出发到其他节点的最短距离,可以用迪杰斯特拉算法,在计算过程中如果长度超过对应节点的消失时间,则-1.原创 2024-07-18 23:23:01 · 218 阅读 · 0 评论 -
807.保持城市天际线
首先找到四个主要方向(东南西北)的天际线情况。南北看是一样的,东西看也是一样的。所以统计出每行的最值,每列的最值,用一个n的数组存储。分别存储行和列的最值。最值的位置进行标记,然后对于其余未标记的元素,可以增量的最值为min(max[row],max[col])。原创 2024-07-15 00:26:27 · 348 阅读 · 0 评论 -
3011.判断一个数组是否可以变为有序
统计出每个数二进制表示下1的个数,对于相邻两个数如果存在左边大于右边则交换,所有数都进行交换后,判断是否是有序的。这里知识点:判断一个数的二进制表示有多少1,如下所示。原创 2024-07-13 19:10:18 · 735 阅读 · 0 评论 -
2970. 统计移除递增子数组的数目 I
本题中的子数组,称为递增子数组。子数组指的是一个数组中一段连续的数组序列。假设nums的长度为n,则nums的子数组的个数为2n×n1。因此只需要找出不满足的递增子数组即可。原创 2024-07-10 20:14:53 · 402 阅读 · 0 评论 -
3102.最小化曼哈顿距离
分析时间复杂度,计算任意两点的曼哈顿距离达到On2,会超时需要优化。因此优化可以将曼哈顿距离与切比雪夫距离的相互关系找出来,然后转换成求切比雪夫距离的方式,得到distanceABmax∣x1−y1−x2−y2∣∣x1y1−x2y2∣。这样,只需要计算每个点的坐标之差、坐标之和即可。这样,曼达顿距离的最大值,即最大值与最小值的差的最大值。删除某个点,删除对应的点然后重新计算即可。原创 2024-07-09 19:25:54 · 1099 阅读 · 0 评论 -
724.寻找数组的中心下标
【代码】724.寻找数组的中心下标。原创 2024-07-08 22:42:05 · 250 阅读 · 0 评论 -
1958.检查操作是否合法
思路是对的,是否存在好线段,则需要从给定节点的8个方向出发,然后寻找是否存在。方向的问题,则构建行列下标变化量,原创 2024-07-07 19:46:56 · 274 阅读 · 0 评论 -
3099.哈沙德数
模拟即可。原创 2024-07-03 20:54:20 · 480 阅读 · 0 评论 -
3115.质数的最大距离
质数/素数,1不是质数。思路:维护最小索引和最大索引,一次遍历后返回两者差值。原创 2024-07-02 23:31:22 · 304 阅读 · 0 评论 -
2065.最大化一张图中的路径价值
枚举从0开始所有可能的路径,代码能力就是如何枚举,递归+回溯递归函数:当前节点,当前路径总时间,节点的价值之和。对相联通的节点进行递归搜索,如果回到节点0,则更新。超过总时间,则当前路径结束,回溯。题目说每个节点至多有四条边与之相连,则对节点的遍历需要先对节点进行处理,存储得到每个节点与之连接的节点有哪些。即将edges转换成邻接表。原创 2024-07-01 19:01:35 · 331 阅读 · 0 评论 -
2710.移除字符串中的尾随0
是C ++字符串类的成员函数之一,用于在字符串中查找最后一个不在指定字符集合中的字符。它返回字符串中最后一个不是指定字符集合(或子字符串)中的字符的位置。或者是从后往前,直到找到第一个不在字符集合中的字符。从右到左,找到第一个不为0的,然后返回字符串前面的.原创 2024-06-29 23:59:16 · 499 阅读 · 0 评论 -
503.下一个更大元素||
下面开始理解,原创 2024-06-24 19:30:48 · 242 阅读 · 0 评论 -
2779.数组的最大美丽值
元素顺序对求最美值没有影响,可以先对数组进行排序。假设选取的相同整数为x,则数组元素能够改变到xx−kxk。所以如果能够在排序后的数组中找到最值差小于等于2k的最长连续子数组,其长度即为最大美丽值。原创 2024-06-15 15:19:50 · 401 阅读 · 0 评论 -
2813.子序列最大优雅度
暴力超时。原创 2024-06-13 14:53:58 · 333 阅读 · 0 评论 -
419.甲板上的战舰
发现, 要么行固定,要么列固定,可以发现如果当前位置左上定点都为’X’,则不满足条件。所以如果当前位置为’X’,判断其左上定点是否也是’X’,如果是则不满足。原创 2024-06-11 21:26:28 · 274 阅读 · 0 评论 -
881. 救生艇
题目意思进行模拟,则直接遍历数组,优先选择能够配对的两人,然后将这两人移除,重新配对。但这样并不能保证一定是最优的,采用贪心的策略,要使船的数量尽可能少,应当使每一艘船载的人数尽可能多。这样,先将人的重量排序,利用双指针进行计算。原创 2024-06-10 14:37:07 · 223 阅读 · 0 评论
分享