1. Two sum
- hashmap
- 一个for循环搞定, 边循环边寻找,一旦找到就break
- 先判定再往map里put元素, 以防两个相同元素。
- O(n)
3. Longest Substring Without Repeating Characters
- two pointer
- 用一个hashmap记录位置
- 原则: 两个指针永不后退
- 更新start:当end上发现相同字符,为防止start后退,Math.max(map.get(s.charAt(end)) + 1, start);
- O(n)
11. Container With Most Water
- two pointer
- 分别从左右开始
- 小的那一个变化
8. String to Integer (atoi)
- 清空格。 记符号, 查溢出
- 将数字字符变为int : int num = str.charAt(i) - '0';
- 检查溢出的时候切记用max/10, 注意检查时也不要溢出
15. 3Sum
- 双指针找sum
- 每个情况都要判定是否是重复数字
- 开始的时候sort, 之后num[i]就跳出, 不可能成功了
- list里加数组: res.add(Arrays.asList(num[lo], num[hi], num[i]))
28. Implement strStr()
- 双指针, haystack一个指针, needle一个指针
- 外层循环指针: i < haystack.length() - needle.length() + 1, 超过就没必要继续了
48. Rotate Image
-
分两次循环
-
- 1 2 3 => 7 8 9 => 7 4 1
-
- 4 5 6 => 4 5 6 => 8 5 2
-
- 7 8 9 => 1 2 3 => 9 6 3
-
第一次: 把上面的下面的整行交换
-
斜对角交换
-
08/16/20