极客时间算法训练营课程笔记
极客时间算法训练营课程笔记
- 刷题最大的误区:只做一遍
- 加速最好的方法和核心思想:1 升维 (双指针,或一维数组维护两个序列号) 2 空间换时间
- 核心思想:第一周第三课第一节
- 例题:第一周第三课第二节,移动零
写下想到的所有方法
leetcode-cn查好方法
题目国际站 most-votes
无毒神掌
主要思想
高级算法模板
本地git配置备份
$ git config --global --list
user.email=lx169978@alibaba-inc.com
user.name=lx169978
gui.encoding=utf-8
提交作业:https://shimo.im/docs/m5rtM8K8rNsjw5jk/read
交作业网址:https://github.com/lexn-lexn/algorithm009-class02
连接复制在geek 评论中 作业一般连接形式 https://github.com/lexn-lexn/algorithm009-class02/tree/master/Week_02
提交issue地址 https://github.com/algorithm009-class02/algorithm009-class02/issues/19 对应week里面的issue
提交格式
#学号: G20200343040322
#姓名: 刘晓
#班级: 2班
#语言: python
#作业&总结链接: https://github.com/lexn-lexn/algorithm009-class02/tree/master/Week_02
-----------------------------------------第一周---------------------------------------------------------------
第一周第三课第三节
计算机核心原理
重复动作
本质决定:三大基本操作 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)