前言
题目来源于leetcode网站 原题以及 《剑指offer》和一些常见的问题汇总,目的是梳理和汇总。
排序
- 八种排序算法
二分查找
- 二分查找
- 求平方根
- 搜索插入位置
- 寻找旋转排序数组中的最小值
- 寻找峰值
字符串和哈希表
- 字符串匹配算法 简单匹配和KMP算法
- 回文字符串
- 反转字符串
- 和为 K 的子数组
- 最长公共前缀
- 最长不重复子串
- 有效的字母异位词
- 字母异位词分组
数字和数组
- 圆圈中剩下的数字
- 扑克牌的顺子
- 缀点成线
- 最大公约数
- 最长连续序列
- 移除元素
- 删除有序数组中的重复项
- 删除有序数组中的重复项 II
- 合并有序数组
- 两数之和
- 三数之和
- 四数字之和
- 搜索二维矩阵
- 最短无序连续子数组
- 整数反转
- 字符串转为整数
- 只出现一次的数字
- 长度最小的子数组
- 两个数组的交集
- 两个数组的交集II
- 加1
- 丑数
- 丑数II
- 两数相除
- 回文数
- 合并区间
位运算
- 判断数字是2的幂
- 位1的个数
- 丢失的数字
- 二进制求和
链表
- 反转链表I
- 反转链表II
- 排序链表
- 重排链表
- 旋转链表
- 链表求交点
- 分隔链表
- 判断链表是否有环
- 找出环的入口节点
- 倒数第K个结点
- 复制带随机指针的链表
- LRU缓存
- 在O(1)时间内删除链表结点
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素 II
- 移除链表元素
- 两数相加(链表模拟加法)
栈,队列和堆
- 栈的压入弹出序列
- 前 K 个高频元素
- 每日温度-单调栈
- 逆置一个栈
- 用队列实现栈
- 用栈实现队列
- 包含min函数的栈
- 滑动窗口最大值
- 验证括号
二叉树
- 二叉树前序遍历
- 二叉树中序遍历
- 二叉树后序遍历
- 二叉树的层序遍历
- 将有序数组转化为二叉搜索树
- 验证搜索二叉树
递归回溯
- 输出笛卡尔积
- 数值的整数次方
- 括号生成
- 单词搜索
- 岛屿数量
- 机器人运动范围
- 全排列
- 全排列II
- 下一个排列
- 子集
- 子集II
- 组合
- 组合总数
- 组合总数II
动态规划
- 割绳子
- 不同的二叉搜索树
- 最长回文子串
- 最长公共子串
- 最长公共子序列
- 最长递增子序列
- 最大乘积子数组
- 比特位计算
- 跳台阶
- 变态跳台阶
- 买卖股票的最佳时机
- 完全平方数
- 最大子数组和
- 单词拆分
- 整数拆分
- 打家劫舍
- 不同的路径
贪心算法
- 加油站
- 跳跃游戏
- 分发饼干
- 无重叠区间