极客时间算法训练营课程笔记
- 刷题最大的误区:只做一遍
- 加速最好的方法和核心思想:1 升维 (双指针,或一维数组维护两个序列号) 2 空间换时间
- 核心思想:第一周第三课第一节
- 例题:第一周第三课第二节,移动零
写下想到的所有方法
leetcode-cn查好方法
题目国际站 most-votes
无毒神掌
主要思想
高级算法模板
-----------------------------------------第一周---------------------------------------------------------------
第一周第三课第三节
计算机核心原理
重复动作
本质决定:三大基本操作 ifelse for recursion
当不会题目时:
1)暴力
2)最简单情况
3)想到最简单情况后, 是否可以总结找到最小重复子单元,
4)找到后即可完成整个编程
例题:爬楼梯。
提示:条件走1或2步可能,那么假设最后还剩一步,那么前面有多少种走法就是F(n-1), 假设最后还剩两部,那么前面有多少种走法F(n-2)
第一周第四课第二节
核心思想
最近相关性 -> 栈
排队先到先得-> 队列
题目:有效括号
引申:洋葱式的思维模型即用栈。排队式思维模型用队列
第一周作业:
1移动零 2 两数求和
class Solution: def moveZeroes(self, nums): i = 0 n_l = len(nums) for j in range(n_l): if nums[j] != 0: nums[i], nums[j] = nums[j], nums[i] i += 1 s = Solution() n = [1, 20, 0, 2, 0, 7] s.moveZeroes(n) print(n) class Solution(object): def two_sum(self, tar, nums): hashmap = {} for i in range(len(nums)): if (tar-nums[i]) in hashmap: return [i, nums[i]],[hashmap[tar-nums[i]], tar-nums[i]] pass hashmap[nums[i]] = i ts = Solution() res = ts.two_sum(10,[12,3,5,7,8,35,21,2,3,]) print(res)