1. two-sum(0919)
map和unordered_map的区别 map是红黑树,unordered_map是哈希表
这道题就适合用unordered_map
第一遍遍历的时候相减得到的差在map里面找一找
如何有效地返回一个vector? 就是先声明一个res,再返回res就行了 You should return by value.
20. 有效的括号(0920)
算法过程!hin重要
- 遍历输入字符串
- 如果当前字符为左半边括号时,则将其压入栈中
- 如果遇到右半边括号时,分类讨论:
- 1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环
- 2)若此时栈为空,则直接返回false
- 3)若不为对应的左半边括号,反之返回false
21. 合并两个有序链表(0921)
开始做的时候还有点生疏,就是要先把头定下来,然后再->next这样操作,和王齐的合并数组一样的,这个不过是链表的形式。
26. 删除排序数组中的重复项(0922)
双指针,听巧妙的,快指针就是为了判断后面到底有多少个和慢指针相同的元素
另外,这个指针的表达形式和代码的具体实现还得加强体会和锻炼
这道题无序数组是做不了的,排序很重要哇
53. 最大子序和(0923)
-
动态规划这里卡了一下
currMaxSum = max(currMaxSum + nums[i], nums[i])
后面这个nums[i]写成了currmax,结果是数组中所有正数的和,一定注意这里是当前元素的最大值,一定是和当前元素有关的,
currMaxSum = max(currMaxSum + nums[i], currMaxSum )
啥也不是复杂度分析
-
时间复杂度: O ( N ) O(N) O(N), 其中 N 是数组长度
-
空间复杂度: O ( 1 ) O(1) O(1)
-