极客时间算法训练营课程笔记
写下想到的所有方法
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)
原文:https://www.cnblogs.com/lx63blog/p/12934918.html