基本算法

《程序员面试宝典》

刷题Map

  1. 数组:

    1. 第一题:删除有序数组中的重复项【简单】
    2. 第二题:两数之和TwoSum【简单】
    3. 第三题:买股票最佳时期【简单】
    4. 第四题:数组中只出现一次的数字【简单】
    5. 第五题:旋转数组【中等】
    6. 第六题:二分查找【简单】(经典)
    7. 第七题:移除数组中给定元素【简单】(经典)
    8. 第八题:有序数组的平方【简单】
    9. 第九题:长度最小的子数组【中等】
  2. 链表:

    1. 第一题:删除链表中的结点【简单】
    2. 第二题:删除链表中的倒数第n位结点【中等】
    3. 第三题:反转单链表【简单】
    4. 第四题:合并两个有序链表【简单】
    5. 第五题:判断链表是否为环形链表【简单】
    6. 第六题:移除所有给定链表元素【简单】(经典)
    7. 第七题:设计链表【中等】(经典)
    8. 第八题:交换两个结点的值【中等】
    9. 第九题:对链表进行插入排序【中等】
  3. 字符串:

    1. 第一题:比较含退格符的字符串【简单】
  4. 哈希表:

    1. 第一题:有效的字母异位词【简单】
  5. 栈和队列:

    1. 第一题:用栈实现队列【简单】
    2. 第二题:有效括号的匹配【简单】(经典)
    3. 第三题:用栈处理逆波兰表达式(运算表达式)【中等】
  6. 树:

    1. 第一题:查找树的深度【简单】

    2. 第二题:二叉树前序、中序、后序遍历【简单】(经典)

    3. 第三题:二叉树前序、中序、后序遍历迭代实现【简单】

    4. 第四题:二叉树前序、中序、后序迭代实现统一【简单】(经典)

    5. 第五题:二叉树层序遍历【中等】

    6. 第六题:二叉树最大深度【简单】

    7. 第七题:二叉树最小深度【简单】

    8. 第八题:完全二叉树节点个数【中等】

    9. 第九题:平衡二叉树【简单】

    10. 第十题:左叶子之和【简单】

    11. 第十一题:找树左下角的值【中等】

    12. 第十二题:二叉树路径总和【简单】

    13. 第十三题:二叉树的所有路径【简单】

    14. 第十四题:从中序遍历与后序遍历构建二叉树【中等】

    15. 第十五题:从前序遍历与中序遍历构建二叉树【中等】

    16. 第十六题:最大二叉树【中等】

    17. 第十七题:合并二叉树【简单】

    18. 第十八题:二叉搜索树中的搜索【简单】

    19. 第十九题:验证二叉搜索树【中等】

    20. 第二十题:二叉搜索树的最小值【简单】

    21. 第二十一题:二叉搜索树的众数【简单】

    22. 第二十二提:二叉树的最近公共祖先【中等】

    23. 第二十三题:二叉搜索树中的插入操作【中等】

    24. 第二十四题:修建二叉树【中等】

    25. 第二十五题:将有序数组转换为二叉搜索树【简单】

    26. 第二十六题:把二叉搜索树转换为累加树【中等】

  7. 贪心算法:

    1. 第一题:分发饼干【简单】
    2. 第二题:摆动序列【中等】
    3. 第三题:最大子序和【简单】
    4. 第四题:买股票的最佳时机【简单】
    5. 第五题:跳跃游戏【中等】
    6. 第六题:监控二叉树【困难】
    7. 第七题:K次取反后数组和【中等】
    8. 第八题:加油站【中等】
    9. 第九题:柠檬水找零【简单】
  8. 回溯算法:

    1. 第一题:组合【中等】
    2. 第二题:对第一题《组合》的剪枝优化【中等】
    3. 第三题:螺旋矩阵2【中等】
    4. 第四题:组合总和3【中等】
    5. 第五题:电话号码的字母组合【中等】
    6. 第六题:组合总和【中等】
    7. 第七题:组合总和2【中等】
    8. 第十题:复原IP地址【中等】
    9. 第十一题:子集【中等】
    10. 第十二题:子集2【中等】
    11. 第十三题:递增子序列【中等】
    12. 第十四题:全排列【中等】