算法学习入门(一)
推荐书籍:《异类:不一样的成功启示》
精通一个领域:
- 切碎知识点
- 刻意练习(五毒神掌,练习弱项)
- 反馈
- 主动反馈
数据结构
- 一维:
- 基础:数组array (String),链表 linked list
- 高级:栈 stack, 队列 queue, 双端队列 deque, 集合 set , 映射 map(hash or map)
- 二维:
- 基础:数tree ,图 graph
- 高级:二叉搜索树 binary search tree(red-black tree红黑树,AVL),堆 heep, 并查集 disjoint set,字典树 Trie
- 特殊:
- 位运算 Bitwise, 布隆过滤器 BloomFilter
- LRU Cache缓存
算法
- if-else,switch -->branch
- for,while loop—>iteration
- 递归 Recursion(Divide & Conquer, Backtrace)
- 搜索 Search: 深度优先搜索(Depth first search) ,广度优先搜索(Breadth first search)
- 动态规划 Dynamic Programming
- 二分查找Binary Search
- 贪心算法 Greedy
- 数学 Math ,几何 Geometry
注意:刻意练习(五毒神掌)
切题四件套
- 审题清晰
- 想出可能的解法们
- 比较,加强
- 多写
- 测试
五毒神掌
刷题第一遍
- 5分钟:读题 + 思考
- 直接看解法:注意!多解法,比较解法优劣。
背诵,默写
解法。
刷题第二遍
- 马上自己写—>LeetCode提交
- 多种解法比较,体会–>优化!
刷题第三遍
- 一天之后,重复做原题。
- 不同解法的熟练程度—>专项练习
刷题第四遍
- 一个月之后,重复做原题。
刷题第五遍
- 面试前一周恢复性训练