# 解决算法面试问题

  • 面试的时候,在遇见算法题目的时候,应该揣摩面试官的意图,听好关键词,比如:有序的数列 做查找、要求算法复杂度是O(logN)这类一般就是用二分的思想。
  • 算法题目的解题思路分以下四步:
    1. 先降低数量级,拿可以计算出来的情况(数据)来构思解题步骤
    2. 根据解题步骤编写程序,优先将特殊情况做好判断处理,比如一个大数组的问题,如果数组 为两个数长度的情况
    3. 检验程序正确性
    4. 是否可以优化(由浅到深),有能力的话可以故意预留优化点,这样可以体现个人技术能力

# 刷题思路

  1. 数组 字符串 链表 (性价比高,多刷)
  2. 排序(4-6道) 查找(二分10+)
  3. 树 二叉搜索树 (性价比高,20+)
  4. 递归 (都看一遍)
  5. 哈希表 (实现,解决冲突)
  6. 双指针 (出现的频率极高,多刷,每个档次都刷刷)
  7. 堆 (精选,别的看看)
  8. 字典树 (难度较高)
  9. 动态规划 (难度较高,大厂问得多,放在后期刷20+)
  10. 栈和队列 (应用层10)
  11. 位运算 (考察基本功)

1-6 ,10精刷(没刷过的)

9 精刷两三道最少

78 粗刷

# 刷题要求

  1. 不看题解

  2. 先实现然后优化

  3. 算出复杂度 找出最优解 去实现

# 刷题步骤:

1.先审题,抓关键字