/LeetCode-JianzhiOffer

I will complete one problem every day!

Primary LanguageC++

LeetCode and 剑指offer

LeetCode

Easy(easy)

Medium(medium)

Hard(hard)

剑指offer

数组

  • 3.数组中重复的数字
  • 11.旋转数组的最小数字(二分查找)
  • 21.调整数组的顺序使奇数位于偶数前面(双指针)
  • 29.顺时针打印矩阵
  • 39.数组中超过一半的数
  • 40.最小的k个数(最小堆O(nlogk))
  • 42.连续子数组的最大和
  • 43.1~n中整数1出现的次数
  • 45.把数组排成最小的数
  • 51.数组中的逆序对
  • 53.在排序数组中查找数字的出现次数
  • 56.数组中只出现次数为1的两个数字
  • 57.和为S的两个数字
  • 57.和为S的连续正数列
  • 59.滑动窗口最大值
  • 66.构建乘积数组

字符串

  • 5.替换空格
    • 思路是先统计空格数目
  • 19.正则表达式匹配(递归)
  • 20.表示数值的字符串
  • 38.字符串的排列
  • 50.第一个只出现一次的字符、字符流中第一个只出现一次的字符
  • 58.左旋转字符串、翻转单词顺序
  • 67.字符串转换成整数

链表

  • 6.从尾到头打印链表
    • 递归、栈
  • 18.删除链表中的节点
  • 22.链表中倒数第k个节点(双指针)
  • 23.链表中环的入口节点
  • 24.反转链表
  • 25.合并两个有序链表
  • 52.两个链表的第一个公共节点

  • 7.重建二叉树
    • 先找根节点,再找左子树的前序和中序集合,递归构建左子树;接着找右子树的前序和中序集合,递归构建右子树
  • 8.二叉树的下一个节点
    • 理解中序遍历即可
  • 26.树的子结构
  • 27.二叉树的镜像
  • 28.二叉树的对称
  • 32.从上到下打印二叉树、二叉树打印成多行、之字形打印二叉树
  • 33.二叉搜索树的后序遍历
  • 33.二叉搜索树的排序的第K个节点
  • 34.二叉树中和为某个值的路径(注意路径是从根节点到叶节点)
  • 36.二叉搜索树与双向链表
  • 37.序列化二叉树
  • 55.二叉树的深度、平衡二叉树

栈和队列

  • 9.用两个栈实现队列
  • 30.包含min函数的栈
  • 31.栈的压入、弹出序列

递归和循环

  • 10.斐波那契数列、青蛙跳台阶、矩形覆盖

代码的完整性

  • 16.数值的整数次方

其它

  • 12.矩阵中的路径(回溯法)
  • 13.机器人的运动范围(回溯法)
  • 15.二进制中1的个数(位运算)
  • 49.丑数
  • 61.扑克牌中的顺子
  • 62.圆圈最后剩下的数字
  • 64.计算1到n的累积和
  • 65.不使用加减乘除计算两个数的和