- 博客(542)
- 资源 (1)
- 收藏
- 关注
原创 【NO.9】LeetCode经典150题-55. 跳跃游戏
我们依次遍历数组中的每一个位置,并实时维护 最远可以到达的位置。对于当前遍历到的位置 x(x是下标),如果它在 最远可以到达的位置 的范围内,那么我们就可以从起点通过若干次跳跃到达该位置,因此我们可以用 x+nums[x] 更新 最远可以到达的位置。解释:无论怎样,总会到达下标为 3 的位置。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]给你一个非负整数数组。
2024-08-25 11:42:31
421
原创 【NO.8】LeetCode经典150题-122. 买卖股票的最佳时机 II
例如,题目中的例子 [1,2,3,4,5],数组的长度 n=5,按照贪心的逻辑,交易过程是进行 4 次买入和 4 次卖出,但实际上买卖操作时是在第 1 天买入,第 5 天卖出。解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [1,2,3,4,5]
2024-08-24 11:42:35
421
原创 【NO.7】LeetCode经典150题-121. 买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。解释:在这种情况下, 没有交易完成, 所以最大利润为 0。设计一个算法来计算你所能获取的最大利润。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]买入这只股票,并选择在。
2024-08-23 22:06:00
285
原创 【NO.6】LeetCode经典150题-189.轮转数组
该方法为数组的翻转:我们可以先将所有元素翻转,这样尾部的 k mod n 个元素就被移至数组头部,然后我们再翻转 [0,k mod n−1] 区间的元素和 [k mod n,n−1] 区间的元素即能得到最后的答案。输入: nums = [1,2,3,4,5,6,7], k = 3。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]输出: [5,6,7,1,2,3,4]算法解决这个问题吗?
2024-08-23 09:07:23
418
原创 【NO.5】LeetCode经典150题-169. 多数元素
当遇到与 cand_num(众数) 相同的数,则票数 count = count + 1,否则票数 count = count - 1。当票数 count 为 0 时,更换候选人,并将票数 count 重置为 1。如果我们把众数(也就是多数)记为 +1,把其他数记为 −1,将它们全部加起来,显然和大于 0,从结果本身我们可以看出众数比其他数多。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。输入:nums = [2,2,1,1,1,2,2]输入:nums = [3,2,3]
2024-08-22 09:01:02
385
原创 【NO.4】LeetCode经典150题-80. 删除有序数组中的重复项 II
给你一个有序数组nums,请你删除重复出现的元素,使得出现次数超过两次的元素,返回删除后数组的新长度。不要使用额外的数组空间,你必须在并在使用 O(1) 额外空间的条件下完成。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以**「引用」**方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]
2024-08-21 08:49:26
501
原创 【NO.3】LeetCode经典150题-26. 删除有序数组中的重复项
解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。因为递增,所以我们遍历当前元素,比较其与前一个元素,相等则跳过此元素, 不等则将当前元素填充到keep指针的位置上。解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]
2024-08-20 08:36:12
375
原创 【NO.2】LeetCode经典150题-27. 移除元素
解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。输入:nums = [0,1,2,2,3,0,4,2], val = 2。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3,
2024-08-19 08:55:46
345
原创 【NO.1】LeetCode经典150题-88.合并两个有序数组
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [] 和 [1]。输出:[1,2,2,3,5,6]
2024-08-18 12:24:04
372
my-shop-master.zip
2022-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人