每道题目均有最优算法。
AC 不是终点,超越 100% 耗时才是。
部分题目的解法在可读性和简洁性上进行了权衡,稍稍牺牲了简洁性。
BFS&DFS、回溯、动态规划的部分题目存在多种解法,目前我选择其中一种解法进行归类。如果我想到更好的办法再做修改。
- array
- string
- listNode
- tree
- datastructure
- dynamic_programming
- backtracing
- greedy
- search(BFS&DFS)
- math
- 两数之和
- 盛最多水的容器
- 三数之和
- 四数之和
- 删除排序数组中的重复项
- 串联所有单词的子串
- 下一个排列
- 搜索旋转排序数组
- 在排序数组中查找元素的第一个和最后一个位置
- 搜索插入位置
- 有效的数独
- 外观数列
- 接雨水
- 合并区间
- 螺旋矩阵 II
- 加一
- 搜索二维矩阵
- 颜色分类
- 组合
- 柱状图中最大的矩形
- 合并两个有序数组
- 杨辉三角
- 杨辉三角 II
- 买卖股票的最佳时机 II
- 寻找旋转排序数组中的最小值
- 两数之和 II - 输入有序数组
- 多数元素
- 旋转数组
- 数组中的第K个最大元素
- 滑动窗口最大值
- 移动零
- 前 K 个高频元素
- 两个数组的交集
- 两个数组的交集 II
- 翻转对
- 数组的相对排序 剑指 Offer 40. 最小的k个数 面试题 08.03. 魔术索引
- 最长回文子串
- 字符串转换整数 (atoi)
- 有效的括号
- 字母异位词分组
- 最后一个单词的长度
- 最小覆盖子串
- 验证回文串
- 翻转字符串里的单词
- 同构字符串
- 最短回文串
- 有效的字母异位词
- 单词规律
- 猜数字游戏
- 反转字符串
- 字符串中的第一个唯一字符
- 字符串相加
- 找到字符串中所有字母异位词
- 重复的子字符串
- 反转字符串 II
- 反转字符串中的单词 III
- 机器人能否返回原点
- 计数二进制子串
- 验证回文字符串 Ⅱ
- 转换成小写字母
- 仅仅反转字母
- 删除最外层的括号
- 合并两个有序链表
- K 个一组翻转链表
- 两两交换链表中的节点
- 删除排序链表中的重复元素
- 环形链表
- 二叉树的中序遍历
- 不同的二叉搜索树 II
- 不同的二叉搜索树
- 验证二叉搜索树
- 相同的树
- 二叉树的层序遍历
- 二叉树的最大深度
- 从前序与中序遍历序列构造二叉树
- 从中序与后序遍历序列构造二叉树
- 将有序数组转换为二叉搜索树
- 有序链表转换二叉搜索树
- 平衡二叉树
- 路径总和
- 二叉树展开为链表
- 二叉树的前序遍历
- 二叉树的后序遍历
- 二叉树的最近公共祖先
- 翻转二叉树
- N叉树的层序遍历
- 删除二叉搜索树中的节点
- 在每个树行中找最大值
- 把二叉搜索树转换为累加树
- N叉树的最大深度
- N叉树的前序遍历
- N叉树的后序遍历
- 合并二叉树
- 二叉搜索树中的搜索
- 二叉搜索树中的插入操作
- LRU缓存机制
- 最小栈
- 实现 Trie (前缀树) 剑指 Offer 09. 用两个栈实现队列
- 设计循环双端队列
- 力扣排行榜
- 正则表达式匹配
- 通配符匹配
- 最大子序和
- 不同路径
- 不同路径 II
- 最小路径和
- 爬楼梯
- 编辑距离
- 解码方法
- 不同的子序列
- 三角形最小路径和
- 买卖股票的最佳时机
- 乘积最大子数组
- 打家劫舍
- 打家劫舍 II
- 最大正方形
- 最长上升子序列
- 戳气球
- 打家劫舍 III
- 比特位计数
- 整数拆分
- 判断子序列
- 青蛙过河
- 分割数组的最大值
- 预测赢家
- 学生出勤记录 II
- 回文子串
- 使用最小花费爬楼梯
- 赛车
- 最长公共子序列
- 电话号码的字母组合
- 括号生成
- 解数独
- 组合总和
- 组合总和 II
- 全排列
- 全排列 II
- N皇后
- N皇后 II
- 子集
- 单词搜索
- 单词搜索 II
- 组合总和 III
- 递增子序列
- 最长有效括号
- 跳跃游戏 II
- 跳跃游戏
- 零钱兑换
- 分发饼干
- 任务调度器
- 柠檬水找零
- 模拟行走机器人
- 单词接龙 II
- 单词接龙
- 被围绕的区域
- 克隆图
- 岛屿数量
- 课程表
- 完全平方数
- 重新安排行程
- 最小基因变化
- 扫雷游戏
- 朋友圈
- 滑动谜题
- 钥匙和房间
- 二进制矩阵中的最短路径
- 回文数
- 字符串相乘
- Pow(x, n)
- 二进制求和
- x 的平方根
- 颠倒二进制位
- 位1的个数
- 2的幂
- 丑数
- 丑数 II
- 有效的完全平方数
- 除数博弈 剑指 Offer 20. 表示数值的字符串