leetcode数组有关题目随笔

j记录一下leetcode刷到的树有关的题目:

1.两数之和 (1)

偶 跟个憨憨一样 几个月没刷了就忘记了 用哈希表来减少空间和时间啊!!!

4. 寻找两个有序数组 2019/12/22(2)

 

 这道题不说了 根本没想到  用两个i,j来判断!太机智了!但是我想到的从左到右每次减掉一定的数的方法像这个大神的解法三 但是没想到这么机智的

呜呜呜 好久没刷题了 今天冬至再捡起来!!

11.盛最多水的容器 2019/12/22 (3)

 

记得之前看过的答案了 想到了max(height[i],height[j]) 但是没想到用一个res记录max(res,(j-i)*...)还需要继续锻炼啊

15.三数之和 2019/12/22 (4)

想到先定一个数 在从这个数的右边第一个和最右边的遍历得到

16.最接近的三叔之和

18.四数之和

26.删除排序数组中的

27.移除元素

31.下一个排列 2019/12/22 (5)

 

天 感觉自己之前白看了 大佬的简短思路让我惭愧

倒序直接翻转  正序寻找下一个排列 寻找下一个最大数的方法是找到nums[i]<nums[i+1] 直接从最后开始寻找而不从一开始

33.搜索旋转排序数组 2019/12/22 (6)

有想到用第一个数和中间那个数进行比较得到target所在分段

34.在排序数组中查找元素的第一个和最后一个位置 2019/12/23 (7)

 

labuladong大佬讲的二分法中的细节问题讲的太好了 小心什么时候有等号 什么时候+1-1等

int mid = left + (right - left) / 2; 可以写成:

int mid = (left + right) >>> 1;

int mid = left + (right - left + 1) / 2; 可以写成:

int mid = left + (right - left + 1) / 2;

注意该方法中的 根据逻辑分支选择相应左或者右中位数,以及在while循环中根绝左边右边相应的先判断大于还是小于

39. 组合总和  2019/12/23 (8)

当初看了这么多遍的还是记不得细节 动手动手敲敲敲

(在回溯的循环中没有考虑到  i < len && residue - candidates[i] >= 0)

除了这个还有更快的

42. 接雨水 2019/12/23 (9)

牛x 我还是忘记怎么写的了 思想思想 

48. 旋转图像 2019/12/26 (10)

偶 找规律 背下来吧 记住(i,j) , (j, n-i-1), (n-i-1, n-j-1), (n -j-1, i) 之间的关系

或者是采取第二种方法中的翻转的方法 总之都是要记住规律

53. 最大子序和 2019/12/26 (11)

简单题  想到了官方题解的贪心算法 但是复杂度还是高 动态规划复杂度低一些

55. 跳跃游戏 2019/12/26 (12)

贪心算法还是最开始要想起来的  节点可达算法这思想太妙了

56. 合并区间 2019/12/27(13)

想到用第二个数组的左边与前一个数组的右边进行对比,用栈(慢了),可以不需要,只需要用一个变量动态记录就可以了。

62. 不同路径 2019/12/27(14)

这个答案是真的牛啊  把二维转换到一维上了

64. 最小路径和 2019/12/27(15)

动态规划 牛p 

答案中的那个解法感觉跟不同路径中是一样的 想想为什么有些算法就是要快一些,一样的想法,换了一个方法就变快了

75. 颜色分类 2020/1/2(16)

官方给的答案是:

荷兰国旗问题,我们用三个指针(p0, p2 和curr)来分别追踪0的最右边界,2的最左边界和当前考虑的元素。本解法的思路是沿着数组移动 curr 指针,若nums[curr] = 0,则将其与 nums[p0]互换;若 nums[curr] = 2 ,则与 nums[p2]互换。

78. 子集 2020/1/2(17)

回溯 回溯是真的牛哈 这道题相对简单

79. 单词搜索 2020/1/2(18)

偏移量数组在二维平面内是经常使用的,可以把它的设置当做一个技巧 这个答案很容易看懂!学习大佬的思路!但是还有比大佬的答案更简洁的更快的!详情看答案界面吧!

每次遍历都要从word的开头开始遍历!然后再进行递归!注意小的细节!

原文地址:https://www.cnblogs.com/doyi111/p/12057663.html