极客时间算法训练营课程笔记

极客时间算法训练营课程笔记

  • 刷题最大的误区:只做一遍
  • 加速最好的方法和核心思想: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)

  

猜你喜欢

转载自www.cnblogs.com/lx63blog/p/12934918.html