Skip to content

cr7258/algorithm

Repository files navigation

算法练习

哈希表

题目 解法 难度 时间复杂度 空间复杂度
剑指 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)

DFS

题目 解法 难度 时间复杂度 空间复杂度
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)

About

Algorithm Practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published