
leetcode150题
文章平均质量分 53
打好基本的数据结构基础。
你的前任奶瓶
致力于成为交叉领域的行业领头羊!
(任何转载文章涉及版权问题,请联系我下架!全部为个人学习理解用)
展开
-
14. 加油站[134 ]
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。输入: gas = [2,3,4], cost = [3,4,3]开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。原创 2023-09-14 10:42:24 · 135 阅读 · 0 评论 -
13. 除自身以外数组的乘积[238]
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。输入: nums = [-1,1,0,-3,3]输入: nums = [1,2,3,4]输出: [24,12,8,6]输出: [0,0,9,0,0]原创 2023-09-14 10:18:46 · 121 阅读 · 0 评论 -
12. O(1) 时间插入、删除和获取随机元素[380]
实现RandomizedSet 类:RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true;否则,返回 false。bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true;否则,返回 false。int getRandom() 随机返回现有集合中的一项(测试用例保证调用此方法时集合中至少存在一个元素)。原创 2023-09-14 00:00:53 · 86 阅读 · 0 评论 -
11. H 指数[274]
根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且每篇论文 至少 被引用 h 次。计算并返回该研究者的 h 指数。由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5 次。输入:citations = [3,0,6,1,5]输入:citations = [1,3,1]原创 2023-09-13 20:01:47 · 59 阅读 · 0 评论 -
10. 跳跃游戏 II[45]
每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。输入: nums = [2,3,1,1,4]解释: 跳到最后一个位置的最小跳跃数是 2。输入: nums = [2,3,0,1,4]题目保证可以到达 nums[n-1]原创 2023-09-01 10:00:50 · 104 阅读 · 0 评论 -
9. 跳跃游戏[55]
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。输入:nums = [2,3,1,1,4]输入:nums = [3,2,1,0,4]原创 2023-08-31 10:13:18 · 59 阅读 · 0 评论 -
8. 买卖股票的最佳时机 II[122]
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。输入:prices = [7,1,5,3,6,4]原创 2023-08-28 22:41:17 · 50 阅读 · 0 评论 -
7.买卖股票的最佳时机[121.]
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2023-08-28 22:13:07 · 53 阅读 · 0 评论 -
6. 轮转数组[189]
输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]原创 2023-08-28 20:01:46 · 52 阅读 · 0 评论 -
5. 多数元素[169]
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2023-08-28 19:50:40 · 54 阅读 · 0 评论 -
4. 删除有序数组中的重复项 II[80]
解释:函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输出:5, nums = [1,1,2,2,3]// 在函数里修改输入数组对于调用者是可见的。输入:nums = [1,1,1,2,2,3]nums 已按升序排列。原创 2023-08-28 17:27:44 · 171 阅读 · 0 评论 -
3.删除有序数组中的重复项
删除有序数组中的重复项原创 2023-08-24 10:01:51 · 59 阅读 · 0 评论 -
2.移除元素[27]
说是删除,其实删除很费时间。比如这里,我们让 a 代表一个 index,b 代表一个index 然后我们让 a 一直往后移动,相当于 nums[a] 从数组第一个数遍历到最后一个数。= val 的时候,我们把这个数拷贝到 b 指向的位置,默认 b 是从 0 开始的,然后 b += 1 指向下一个位置。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。原创 2023-08-24 09:39:04 · 53 阅读 · 0 评论 -
1. 合并两个有序数组 [原题88]
合并俩个有序数组原创 2023-08-19 17:46:12 · 68 阅读 · 0 评论