1 数据结构与算法总览

1 数据结构

数据结构主要分为三类

一维、二维、特殊

一维:

  • 基础:数组 array(string),链表 linked list

  • 高级:栈 stack,队列 queue ,双端队列 deque,集合 set,映射 map(hash or map),etc

    • 栈:前进后出

    • 队列:先进先出

二维:

二维数据结构都是从一维泛化而来的

  • 基础:数 tree 、图 graph

  • 高级:二叉搜索树 binary search tree,红黑树,堆 heap,并查集 disjoint set,字典树 Trie,etc

特殊:

  • 位运算 Bitwise,布隆过滤器 BloomFiter

  • LRU Cache

2 算法

  • if-else 、switch —> branch

  • for,whil loop —> lteration

  • 递归:函数自己调用自己

  • 搜索 Search:深度优先搜索 Depth first search,广度优先搜索 Breadth first search,A*,etc

  • 动态规划 Dynamic Programming

  • 二分查找 Binary Search

  • 贪心 Greedy

  • 数学 Math,几何 Geomtry

3 刻意练习

  • 刷题反复练习

  • 练习缺陷,弱点地方

4 刷题技巧

4.1 切题四件套

  • 反复看题,确保自己理解是正确的

  • 当看到题之后,想所有能够解这道题的解法,不要只用自己想到的第一种解法去解体(把所有能够解题的想法首先过一遍,不同的方法他们的时间复杂度和空间复杂度都不同),把时间复杂度和空间复杂度进行分析,从中找到一种最优的解法,也就是时间最快的一种解法

  • 最后才是开始写代码

  • 最后把测试样例列举多个

4.2 五遍刷题法

  • 任何一个题目至少做五遍以上。

  • 第一次接触这道题目,先花15分钟的时间读题和思考,把题目的意思理解了同时思考了

  • 如果还是没有想出该怎么做的话,直接看解法,比较不同解法的优略。最后是默写记住这种解法,非常重要

  • 当把别人的解法理解之后,马上自己写,这个时候就不要看别人的解法

  • 多种解法比较,体会优化。最重要的就是比较他们的执行时间

  • 最后过了一天,再次做重复的题

  • 不同解法的熟练程度 —> 专项训练

  • 过了一周:反复回来练习相同的题目

  • 面试前两周进行恢复性练习

5 总结

  • 职业训练:拆分只是点,刻意练习,寻求反馈

  • 五遍刷题法

  • 做算法题,最大误区一个题只做一遍

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇