绿色不需要看,可能一次过,可能重看也没必要,红色为一定要看,蓝色为读一下就行,不需要重新做
有些代码会重做,有个式子,如果是0+1就说明对了0次,错了1次,肯定就是只写了一次
1.两数之和:哈希表,注意key是值,value才是index。
2.两数相加:和归并的merge基本一致,差别就是当两个链表均到头的时候,进位可能还是存在的,此时要注意加一次。
3.无重复字符的最长子串:用哈希记录是否重复,滑动窗口更新区域最大小值(编码小细节错误)
4.寻找两个正序数组的中位数:找到两个数组的分割线,注意扣边界和给好初始值。
5.最长回文子串:找到最长回文右边界,判断i的边界和这个边界的关系
6.Z字型变换:非常典型的宏观分解问题,要用到额外的空间复杂度
7.整数变换:注意整数转为string用to_string
8.字符串转换整数 (atoi)注意find_first_of那四个函数的使用方法
9.回文数:毫无难度
10.正则表达式匹配:这道题绿色不是因为很简单,而是因为很麻烦,没意义,虽然也是几乎一次过。直接字符串匹配不行的,因为,忘了因为啥了,反正递归减少字符串长度,因此DP也行
11. 盛最多水的容器:头尾双指针向中间移动,时时更新最大值
12整数转罗马数字:对100、10分别取余,字符串添加
13罗马数字转整数:根据字符添加int
14最长公共前缀:字典树
15三数之和:不要额外空间复杂度,时间复杂度是 O ( n 2 ) O(n^2) O(n2)
16.最接近的三数之和:贼简单,和15题一样
17. 电话号码的字母组合:简单的全排列,递归就行
18.四数之和:不重复的数组是怎么实现的, O ( n 3 ) O(n^3) O(n3),没有有有额外空间复杂度
19. 删除链表的倒数第 N 个结点:非常简单的快慢指针
20.有效的括号:类似单调栈,一次过
21. 合并两个有序链表:链表的归并merge
22生成括号:递归做成即可,注意不可以出现右括号多于左括号的情况。
23合并K个升序链表:多一个堆,找出所有链表中最小的节点
24. 两两交换链表中的节点:交换节点,提前一位就OK
25.K个一组反转链表:这道题难度不高,但是很考验编码能力,考得很全面,写写吧
26.删除有序数组中的重复项:贼简单
27.移除元素:贼简单,和26一样
28. 实现 strStr():KMP竟然是简单
29.两数相除:快速幂问题,和50是一对
30. 串联所有单词的子串:很简单,别想复杂了, O ( n 2 ) O(n^2) O(n2)的复杂度
31. 下一个排列: O ( n ) O(n) O(n)多试几个数字找规律就行了
32. 最长有效括号 O ( n ) O(n) O(n) 1+1
33.搜索旋转排序数组1+0算法思想不难,也是一次过,但是编程过程贼艰辛。
34.在排序数组中查找元素两次二分而已
35.搜索插入位置简单的二分
36.有效的数独简单的哈希
37.解数独:思路很简单,但是我做的有点慢,主要是没有理清那些思路
38.外观数列:简单的奇怪,我一度以为可以用贪心呢
39. 组合总和:做到不重复,有点难。其实这道题没做出来,40做出来了,但是40比这个还难,就用40了。
40. 组合总和 II:比39难,但是我其实做出来了
41. 缺失的第一个正数:没想到竟然会考这个,都快忘了还有这个了。网上那些乱七八糟名字叫法,就是个位图而已。
42.接雨水红色并不是不会,而是很典型,我现在会,以后可能忘。
43. 字符串相乘:这道题不难,但我没有一次做对,也非了点事,但是这道题确实没啥意义。
44. 通配符匹配:这道题没有那么难想,我也做了挺久,但是并没有太大的难度,也没看题解,就过了吧
45.跳跃游戏 II:dp复杂度为 O ( n 2 ) O(n^2) O(n2),再用贪心将复杂度降到 O ( n ) O(n) O(n),for每个节点的所有值,选择这个节点的下个节点能走的最远地方。0+2
46. 全排列:比较简单
47. 全排列 II:没做出来是因为我的全排列方法在全排列II中不适用。需要重新写。官方题解写的很清楚了。
48. 旋转图像:简单的宏观分解
49. 字母异位词分组:做出来了,但开始的方法不太对
50.pow(x,n):快速幂问题,29的变种
51.N皇后:和数独是类似的题目,但是数独的规律我找到了,N皇后没找到,所以第一次超时了
52.N皇后II:和51一模一样,答案都是复制的
53. 最大子数组和:我是真不会,真没做出来
54.螺旋矩阵:简单的宏观分解
55. 跳跃游戏:比跳跃游戏II简单很多
56. 合并区间:思路全错了,就是不会做
58.最后一个单词的长度:很简单,注意string的用法
215.第K大的数:先partition,后根据第k大的数这个k进行分割。bfprt很简单,就是将全部的数分割为N份,每份有5个数,取出这N个数组的中位数组成新的数组继续分割,最终剩下的数当做哨兵
414.第三大的数:看215即可