力扣初级算法的学习笔记
最重要的事情
需要持之以恒,以兴趣, 作以实际的工作要解决的问题为主导
最终的目的:
大幅度提高自己的核心竞争能力和提高自己的思维能力。 思维方式决定境界与能力. 也需要最大程度的暴露自己所有的不足,从而才能够更好的提高.
3个月计划
在3个月之内掌握所有的初级算法,明白应用的场景,也能够用一个清晰语言表达解释出来. 能够快速的识别和反映出一般的算法解决问题.
一周计划
每次只制作一周的计划. 然后每解完一道题就要整理博客一天. 要弄懂一道题目要比想象中的要难.
From 12/08/2019 to 12/15/2019
初级算法类别 | 题目名称 | 预期完成时间 | 实际完成时间 | 超时多少 | 自我完成质量评估 | Comments |
---|---|---|---|---|---|---|
Binary Tree 树 | 二叉树的最大深度 | 12/8/2019 | 12/8/2019 | C | ||
整理博客 | 12/9/2019 | 12/9/2019 | C | |||
Binary Tree 树 | 验证二叉搜索树 | 12/ 11/2019 | 12/12/2019 | 1 day | C + | |
整理博客 | 12/12/2019 | 12/12/2019 | C+ | 慢慢找到点感觉了 | ||
Array 数组 | 旋转数组 | 12/13/2019 | ||||
整理博客 | 12/14/2019 | |||||
Array 数组 | 两个数组的交集II | 12/16/2019 | ||||
整理博客 | 12/17/2019 |
目前的方法:
以力扣的初级算法题目为引导,对所有类似的算法题目都有一个大概整体的认识.
反馈的机制:
通过leetcode的反馈, 对自己的练习进行评价,并且进行博客的总结.
进行纠正:
确保自己能够完全掌握了初级算法的全部内容和自己能够通过口头语言的形式解释出来.
运用场景的思考:
( 学的很浅,自己不能够回答,故结合了一些其他人精髓) 知乎中的一些解释
算法就是速度 (代码走多少步)和 内存( 有多少多余的步数)上面进行考虑. 例如二分查找要比有序查找要快很多. 有序查找为Big(n) 而二分查找为Big(logN) . 在二分查找这样的条件下面,我们在有序数组10000个值里面,要查找到我们的值,也只需要14步就行了, 这样就可以大量的节约我们的时间,从而达到我们想要的效果.
我们什么时候要考虑在代码里面加入这个思想?
在插入、删除、查找、遍历等操作都相对快的容器,于是人们发明了二叉树.
Recursion ( 递归 )
Recursion 是 Binary Tree里面的一环,这个基础要掌握. 如果对于Recursion 没有一个很好的理解的话,就很难能够理解这道题目的解法.
def getSum(n):
if (n == 1):
return 1
else:
return n* getSum(n-1)
缺点:占用大量的计算时间
优点: 写出来的代码好看,干净…
…
Binary Tree ( 树 )
求MaxDepth
例如如何找到一个list [1,3,7,8,9,2] 的maxDepth ?
'leetcode 运用来迭代iteration的