题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
剑指 Offer 50. 第一个只出现一次的字符 | Go Java |
简单 | O(n) | O(1) |
146. LRU 缓存 | Go Java |
中等 | O(1) | O(1) |
13. 罗马数字转整数 | Go Java |
中等 | O(n) | O(1) |
1. 两数之和 | Go Java |
中等 | O(n) | O(n) |
15. 三数之和 | Go Java |
中等 | O(n^2) | O(n) |
217. 存在重复元素 | Go Java |
简单 | O(n) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
盛最多水的容器 | Go | 中等 | O(n) | O(1) |
面试题 01.05. 一次编辑 | Go | 简单 | O(m+n) | O(1) |
9. 回文数 | Go Java |
简单 | O(logn) | O(1) |
27. 移除元素 | Go Java |
简单 | O(n) | O(1) |
344. 反转字符串 | Go Java |
简单 | O(n) | O(1) |
557. 反转字符串中的单词 III | Go Java |
简单 | O(n) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
203. 移除链表元素 | Go Java |
简单 | O(n) | O(1) |
876. 链表的中间结点 | Go Java |
简单 | O(n) | O(1) |
83. 删除排序链表中的重复元素 | Go Java |
简单 | O(n) | O(1) |
剑指 Offer 25. 合并两个排序的链表 | Go Java |
简单 | O(n+m) | O(1) |
2. 两数相加 | Go Java |
中等 | O(n+m) | O(1) |
206. 反转链表 | Go Java |
中等 | O(n) | O(1) |
328. 奇偶链表 | Go Java |
中等 | O(n) | O(1) |
19. 删除链表的倒数第 N 个结点 | Go Java |
中等 | O(n) | O(1) |
25. K 个一组翻转链表 | Go Java |
困难 | O(n) | O(1) |
160. 相交链表 | Go Java |
简单 | O(m+n) | O(1) |
141. 环形链表 | Go Java |
简单 | O(n) | O(1) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
剑指 Offer 09. 用两个栈实现队列 | Go Java |
简单 | O(1) | O(n) |
面试题 03.05. 栈排序 | Go Java |
中等 | O(1) | O(n) |
155. 最小栈 | Go Java |
简单 | O(1) | O(n) |
20. 有效的括号 | Go Java |
简单 | O(n) | O(1) |
面试题 16.26. 计算器 | Go Java |
中等 | O(n) | O(n) |
1047. 删除字符串中的所有相邻重复项 | Go Java |
简单 | O(n) | O(1) |
739. 每日温度 | Go Java |
中等 | O(n) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
225. 用队列实现栈 | Go Java |
简单 | O(1) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
56. 合并区间 | Go Java |
简单 | O(nlogn) | O(logn) |
977. 有序数组的平方 | Go Java |
简单 | O(n) | O(1) |
179. 最大数 | Java | 中等 | O(n^2) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
70. 爬楼梯 | Go Java |
简单 | O(n) | O(n) |
剑指 Offer 10- II. 青蛙跳台阶问题 | Go Java |
简单 | O(n) | O(n) |
剑指 Offer 10- I. 斐波那契数列 | Go Java |
简单 | O(n) | O(n) |
剑指 Offer 06. 从尾到头打印链表 | Go Java |
简单 | O(n) | O(n) |
面试题 08.01. 三步问题 | Go Java |
简单 | O(n) | O(n) |
剑指 Offer 24. 反转链表 | Go Java |
简单 | O(n) | O(n) |
剑指 Offer 25. 合并两个排序的链表 | Go Java |
简单 | O(m+n) | O(m+n) |
剑指 Offer 16. 数值的整数次方 | Go Java |
简单 | O(logn) | O(logn) |
面试题 08.05. 递归乘法 | Go Java |
中等 | O(logn) | O(logn) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
733. 图像渲染 | Go Java |
简单 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
77. 组合 | Go Java |
中等 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 | 题型 |
---|---|---|---|---|---|
704. 二分查找 | Go Java Rust |
简单 | O(logn) | O(1) | |
374. 猜数字大小 | Go Java |
简单 | O(logn) | O(1) | |
278. 第一个错误的版本 | Go Java |
简单 | O(logn) | O(1) | |
162. 寻找峰值 | Go Rust |
简单 | O(logn) | O(1) | |
35. 搜索插入位置 | Go Rust |
简单 | O(logn) | O(1) | 查找第⼀个⼤于等于给定值的元素位置 |
744. 寻找比目标字母大的最小字母 | Go Rust |
简单 | O(logn) | O(1) | 查找第⼀个⼤于给定值的元素 |
34. 在排序数组中查找元素的第一个和最后一个位置 | Go Rust |
中等 | O(logn) | O(1) | 查找第⼀个值等于给定值的元素,查找最后⼀个值等于给定值的元素 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 | 题型 |
---|---|---|---|---|---|
144. 二叉树的前序遍历 | Go Java |
简单 | O(n) | O(n) | 二叉树前中后序遍历 |
94. 二叉树的中序遍历 | Go Java |
简单 | O(n) | O(n) | 二叉树前中后序遍历 |
589. N 叉树的前序遍历 | Go Java |
简单 | O(n) | O(n) | 二叉树前中后序遍历 |
剑指 Offer 32 - I. 从上到下打印二叉树 | Go Java |
中等 | O(n) | O(n) | 二叉树按层遍历 |
102. 二叉树的层序遍历 | Go Java |
中等 | O(n) | O(n) | 二叉树按层遍历 |
剑指 Offer 32 - III. 从上到下打印二叉树 III | Go Java |
中等 | O(n) | O(n) | 二叉树按层遍历 |
429. N 叉树的层序遍历 | Go Java |
中等 | O(n) | O(n) | 二叉树按层遍历 |
513. 找树左下角的值 | Go Java |
中等 | O(n) | O(n) | 二叉树按层遍历 |
617. 合并二叉树 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
104. 二叉树的最大深度 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
559. N 叉树的最大深度 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
98. 验证二叉搜索树 | Go Java |
中等 | O(n) | O(n) | 二叉树上的递归 |
700. 二叉搜索树中的搜索 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
938. 二叉搜索树的范围和 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
701. 二叉搜索树中的插入操作 | Go Java |
中等 | 二叉树上的递归 | ||
剑指 Offer 55 - II. 平衡二叉树 | Go Java |
中等 | O(n) | O(n) | 二叉树上的递归 |
101. 对称二叉树 | Go Java |
简单 | O(n) | O(n) | 二叉树上的递归 |
剑指 Offer 54. 二叉搜索树的第k大节点 | Go Java |
简单 | O(n) | O(n) | 二叉搜索树 |
538. 把二叉搜索树转换为累加树 | Go Java |
简单 | O(n) | O(n) | 二叉搜索树 |
面试题 04.06. 后继者 | Go Java |
简单 | O(n) | O(n) | 二叉搜索树 |
236. 二叉树的最近公共祖先 | Go Java |
中等 | O(n) | O(n) | 最近公共祖先 |
235. 二叉搜索树的最近公共祖先 | Go Java |
中等 | O(n) | O(n) | 最近公共祖先 |
114. 二叉树展开为链表 | Go Java |
简单 | O(n) | O(n) | 二叉树转链表 |
面试题 17.12. BiNode | Go Java |
简单 | O(n) | O(n) | 二叉树转链表 |
面试题 04.03. 特定深度节点链表 | Go Java |
中等 | O(n) | O(n) | 二叉树转链表 |
剑指 Offer 36. 二叉搜索树与双向链表 | Go Java |
中等 | O(n) | O(n) | 二叉树转链表 |
108. 将有序数组转换为二叉搜索树 | Go Java |
简单 | O(n) | O(logn) | 按照遍历结果反向构建二叉树 |
105. 从前序与中序遍历序列构造二叉树 | Go Java |
中等 | O(n) | O(n) | 按照遍历结果反向构建二叉树 |
106. 从中序与后序遍历序列构造二叉树 | Go Java |
中等 | O(n) | O(n) | 按照遍历结果反向构建二叉树 |
889. 根据前序和后序遍历构造二叉树 | Go Java |
中等 | O(n) | O(n) | 按照遍历结果反向构建二叉树 |
剑指 Offer 33. 二叉搜索树的后序遍历序列 | Go Java |
中等 | O(n^2) | O(n) | 按照遍历结果反向构建二叉树 |
543. 二叉树的直径 | Go Java |
简单 | O(n) | O(n) | 二叉树上的最长路径和 |
剑指 Offer 34. 二叉树中和为某一值的路径 | Go Java |
中等 | O(n^2) | O(n) | 二叉树上的最长路径和 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
3. 无重复字符的最长子串 | Go Java |
简单 | O(n) | O(∣Σ∣),其中 Σ 表示字符集 |
209. 长度最小的子数组 | Go Java |
中等 | O(n) | O(1) |
567. 字符串的排列 | Go Java |
中等 | O(n) | O(1) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 | 题型 |
---|---|---|---|---|---|
70. 爬楼梯 | Go Java |
简单 | O(n) | O(n) | |
416. 分割等和子集 | Go Java |
中等 | O(n×target) | O(n×target) | 0-1 背包 |
494. 目标和 | Go Java |
中等 | 0-1 背包 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
45. 跳跃游戏 II | Go Java |
简单 | O(n) | O(1) |
121. 买卖股票的最佳时机 | Go Java |
简单 | O(n) | O(1) |
53. 最大子数组和 | Go Java |
简单 | O(n) | O(1) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
14. 最长公共前缀 | Go Java |
简单 | O(mn) | O(1) |
剑指 Offer 58 - I. 翻转单词顺序 | Go Java Rust |
简单 | O(n) | O(n) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
7. 整数反转 | Go Java |
简单 | O(log∣x∣),翻转的次数即 x 十进制的位数 | O(1) |
118. 杨辉三角 | Go Java |
简单 | O(n^2) | O(1) |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
28. 实现 strStr() | Go Java |
简单 |
题目 | 解法 | 难度 | 时间复杂度 | 空间复杂度 |
---|---|---|---|---|
303. 区域和检索 - 数组不可变 | Go Rust |
简单 | O(1) | O(n) |
304. 二维区域和检索 - 矩阵不可变 | Go Rust |
中等 | O(1) | O(n) |