LeetCode
文章平均质量分 54
为什么我不是源代码
这个作者很懒,什么都没留下…
展开
-
LeetCode:购买股票Ⅱ——O(n)
解题思路一切尽在不言中,思路已在注解里。我这个算法算哪一类我也不太懂,大家自己看哈。代码class Solution { /** * 思路: * 1. 找到一个最低价minPrice,然后往后找比他高的,如果比他还低,就更新。 * 2. 找到第一个比他高的,首先判断下一个是否比当前高,如果比当前低,就卖出。 * 3. 然后从卖出后的第一天开始找下一个最低价minPrice,重复 1 2。 * 4. 定义一个 flag 来标记是否已经卖出上一个原创 2021-10-20 17:28:53 · 86 阅读 · 0 评论 -
LeetCode:剑指 Offer II 069. 山峰数组的顶部
log n 的时间复杂度,就需要从中间开始找,定义三个变量 start end mid。找到中间位置,有以下几种情况:1.1 如果大于左边的,也大于右边的,那么这里就是山峰了,直接返回。1.2 如果小于右边的,那么山峰在右边。(start = mid+1)1.3 如果小于左边的,那么山峰在左边。(end = mid-1)二分循环的结束条件是 start<end。因为他俩相等的时候,就是峰顶,我们可以直接退出并返回。在进行mid赋值后还要考虑mid是否等于0,因为判断语句有 mid-1 的原创 2021-10-14 08:40:02 · 100 阅读 · 0 评论 -
LeetCode:跳跃游戏(middle)
解题思路从最后一个元素往前找,找第一个能够到达最后一个元素的值 x;然后以 x 为坐标往前找,找第一个能到达 x 的值;不断重复第二步;如果最后的值等于 0,就说明从起点能够到达 x;由于 x 能够到达最后一个元素,所以也就可以从起点走到终点了;最后的返回就是判断是否等于 0 。(return x==0)代码class Solution { public boolean canJump(int[] nums) { int x = nums.length-1;原创 2021-10-10 16:26:05 · 283 阅读 · 0 评论 -
【为什么我不是源代码】打家劫舍(动态规划篇)
解题思路 在最开始看到这个题目的时候,我蒙住了,这是什么神仙题目??然后学会了动态规划后再来看这个代码,原来如此! 这个题咱不想太复杂了,就三类情况:当只有一家可以偷的时候,我们直接返回他的金额就行了。( return nums[0] )当有两家的时候,我们偷钱多的那一家。( return max(nums[0], nums[1]) )原创 2021-10-08 19:10:58 · 78 阅读 · 0 评论 -
LeetCode:爬楼梯(动态规划+递归)
解题思路 首先这个爬楼梯,一次可以走一级台阶或者两级台阶,那么也就是说在第n级台阶的时候,他的前一步可能走了一级或者两级,那么第n级台阶的所有可能的次数就是 f(n) = f(n-1) + f(n-2)。 也就是前一步的两种情况的可能次数之和,就等于这一级代替的总次数。原创 2021-10-03 19:49:09 · 252 阅读 · 0 评论 -
LeetCode:数字转16进制
解题思路 进行进制转换,最常有的思路就是取余运算了,那么我们可以思考怎样进行取余运算,效率最快。 在进行 m 进制取余的时候,有这样一个公式:number%m = number&(m-1) 这个公式成立的前提是 m原创 2021-10-02 11:22:34 · 115 阅读 · 0 评论 -
LeetCode:无重复字符的最长子串
题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,原创 2021-09-28 13:48:40 · 72 阅读 · 0 评论 -
LeetCode:逆波兰表达式(Middle)
各位朋友好久不见~ 因为刚结束考研复试,还没怎么写代码,前段时间写了点儿题目,也还没来得及来做笔记。今天我来了,带来了近期的第一题——逆波兰表达式。 如果是没见过这个名字的人,会比较陌生哈,我们常用的专业术语就是前缀表达式原创 2021-04-15 17:31:42 · 212 阅读 · 0 评论 -
LeetCode:两数之和(Easy难度)
一、 题目 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2原创 2020-12-29 18:02:17 · 74 阅读 · 0 评论 -
LeetCode:移除元素(Easy难度)
(做LeetCode笔记的第二天)题目: 给你一个数组 nums 和一个值 val,你需要 原地移除 所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间 并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums原创 2020-10-15 10:32:57 · 111 阅读 · 0 评论 -
LeetCode:删除排序数组中的重复项(Easy难度)
(做LeetCode笔记的第一天)题目: 给定一个 排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2 ,并且原数原创 2020-10-13 17:33:13 · 97 阅读 · 0 评论 -
LeetCode:字符串压缩(Easy难度)
题目: 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母 (a至z)。来源:力扣(LeetCode) LeetCode的题难度在于需要考虑非常仔细周到。比如这道题。原创 2020-10-13 11:07:14 · 118 阅读 · 0 评论