算法题分类整理

算法刷题


在刷题的过程中,整理和分类算法相关题目。

  1. 剑指 Offer 09. 用两个栈实现队列

  2. 剑指 Offer 30. 包含min函数的栈
    思想:维护一个递减的栈来实现min方法

  3. 剑指 Offer 59 - II. 队列的最大值
    这里使用的思想与上一题相同,但区别在于本题需要维护的是一个双向队列Deque,与Queue的区别是,它可以从两端删除或增加元素!
    这个双向队列Deque是从头向尾递减的,所以要注意从尾部开始比较!!!
    关于双向队列的知识,可以参考Java中的queue和deque对比详解

  1. 剑指 Offer 40. 最小的k个数
    使用PriorityQueue对象实现移动窗,PriorityQueue的顶端是最小值。不同于先进先出的队列,优先级队列(PriorityQueue)的话,是按照对象给定的优先级来进行出入的处理,默认是从小到大
  2. 剑指 Offer 41. 数据流中的中位数
    利用一个大顶堆,一个小顶堆来实现。一个小顶堆用来做前半部分排序,大顶堆用来做后半部分排序。

排序

  1. 剑指 Offer 45. 把数组排成最小的数
    转化为比较拼接字符串后的大小

  1. 剑指 Offer 07. 重建二叉树

  2. 剑指 Offer 26. 树的子结构
    使用两个递归,一个递归用来判断当前节点是否子结构,另一个用来判断其左右节点作为根节点是否是子结构

  3. 剑指 Offer 27. 二叉树的镜像
    递归思想

  4. 剑指 Offer 28. 对称的二叉树
    递归思想

  5. 剑指 Offer 32 - I. 从上到下打印二叉树
    递归无法解决,利用队列来保存当前层的节点

  6. 剑指 Offer 32 - II. 从上到下打印二叉树 II
    同样适用队列的思想来解决

  7. 剑指 Offer 34. 二叉树中和为某一值的路径
    递归思想

  8. 剑指 Offer 37. 序列化二叉树

  9. 剑指 Offer 54. 二叉搜索树的第k大节点
    递归思想

  10. 剑指 Offer 55 - I. 二叉树的深度
    递归思想

  11. 剑指 Offer 55 - II. 平衡二叉树
    与上一题思想类似

  12. 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
    递归,要注意返回值!

  13. 剑指 Offer 68 - II. 二叉树的最近公共祖先
    递归思想

队列

  1. 剑指 Offer 59 - I. 滑动窗口的最大值
    利用PriorityQueue排序

数组

  1. 剑指 Offer 29. 顺时针打印矩阵

  2. 剑指 Offer 53 - I. 在排序数组中查找数字 I
    利用两次二分查找找到左右边界

  3. 剑指 Offer 53 - II. 0~n-1中缺失的数字
    利用二分查找

  4. 面试题4. 二维数组中的查找

Hash表

  1. 剑指 Offer 48. 最长不含重复字符的子字符串
    使用双指针+Hash表

  2. 剑指 Offer 50. 第一个只出现一次的字符
    使用Hash表

  3. 剑指 Offer 03. 数组中重复的数字

链表

  1. 剑指 Offer 22. 链表中倒数第k个节点
    使用双指针的方法来解决,就不用遍历整个链表了。

  2. 剑指 Offer 24. 反转链表
    递归思想,但是要注意从后往前反转

  3. 剑指 Offer 35. 复杂链表的复制
    使用Hash表来完成深拷贝

  4. 剑指 Offer 52. 两个链表的第一个公共节点
    規律:a+c+b = b+c+a

  5. 剑指 Offer 06. 从尾到头打印链表

  6. 剑指 Offer 18. 删除链表的节点

字符串

  1. 剑指 Offer 58 - I. 翻转单词顺序
    注意这里题目的要求,反转后首位不能有空格,中间空格不能超过一个

  2. 剑指 Offer 58 - II. 左旋转字符串
    利用substring

  3. 剑指 Offer 67. 把字符串转换成整数
    关键是对越界的数值处理

回溯算法

  1. 剑指 Offer 38. 字符串的排列

动态规划

分治算法

位运算

数学

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值