这是一个算法学习仓库,有我个人算法学习整理的笔记,并且有按照不同tag整理的来源于各种书籍,以及LeetCode的题目,几乎每一道题目都有相对应的题解;所有题目使用的语言为Java;有部分题目提供了其他语言的代码
感谢您的fork与star~~ ❤ ❤ ❤
- 笔记
- 使用递归写一个获取数组中最大值的算法
- 归并排序
- 归并排序之小和问题
- 归并排序之逆序对问题
- 堆排序
- 在Java中的堆结构:优先级队列
- 堆问题:对一个每个元素和移动距离不超过k的数组进行排序
- 比较器
- partition问题
- 荷兰国旗问题
- 快速排序
如果有错误需要更正请提issue,每一道题并不一定是最优解,如果你有更好的代码,欢迎提PR
题目 | Java | Go | JS | 题解 |
---|---|---|---|---|
374. 猜数字大小 | Solution.java | Solution.go | solution.js | <缺> |
74. 搜索二维矩阵 | Solution.java | <缺> | <缺> | <缺> |
34. 在排序数组中查找元素的第一个和最后一个位置 | Solution.java | <缺> | <缺> | 题解 |
题目 | Java | 题解 |
---|---|---|
剑指 Offer 05. 替换空格 | Solution.java | 题解 |
剑指 Offer 58 - II. 左旋转字符串 | Solution.java | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
长按键入 | Solution.java | <缺> | <缺> |
两个数组的交集 | Solution.java | Solution.go | 题解 |
有效的山脉数组 | Solution.java | Solution.go | 题解 |
重排链表 | Solution.java | <缺> | 题解 |
返回倒数第 k 个节点 | Solution.java | Solution.go | <缺> |
922. 按奇偶排序数组 II | Solution.java | Solution.go | <缺> |
151. 翻转字符串里的单词 | Solution.java | <缺> | 题解 |
328. 奇偶链表 | Solution.java | Solution.go | 题解 |
283. 移动零 | Solution.java | Solution.go | <缺> |
830. 较大分组的位置 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
剑指 Offer 25. 合并两个排序的链表 | Solution.java | <缺> | 题解 |
剑指 Offer 18. 删除链表的节点 | Solution.java | <缺> | 题解 |
剑指 Offer 24. 反转链表 | Solution.java | <缺> | 题解 |
回文链表 | Solution.java | <缺> | 题解 |
重排链表 | Solution.java | <缺> | 题解 |
移除重复节点 | Solution.java | <缺> | <缺> |
返回倒数第 k 个节点 | Solution.java | Solution.go | <缺> |
328. 奇偶链表 | Solution.java | Solution.go | 题解 |
147. 对链表进行插入排序 | Solution.java | <缺> | <缺> |
86. 分隔链表 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
逆波兰表达式求值 | Solution.java | <缺> | <缺> |
20. 有效的括号 | Solution.java | <缺> | 题解 |
155. 最小栈 | Solution.java | <缺> | 题解 |
232. 用栈实现队列 | Solution.java | <缺> | 题解 |
225. 用队列实现栈 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
LCP 07. 传递信息 | Solution.java | <缺> | <缺> |
题目 | Java | Go | Python | 题解 |
---|---|---|---|---|
有多少小于当前数字的数字 | Solution.java | <缺> | <缺> | 题解 |
独一无二的出现次数 | Solution.java | <缺> | <缺> | 题解 |
217. 存在重复元素 | Solution.java | <缺> | Solution.py | <缺> |
575. 分糖果 | Solution.java | <缺> | <缺> | <缺> |
454. 四数相加 II | Solution.java | <缺> | <缺> | 题解 |
49. 字母异位词分组 | Solution.java | <缺> | <缺> | <缺> |
290. 单词规律 | Solution.java | <缺> | <缺> | <缺> |
题目 | Java | Go | 题解 |
---|---|---|---|
求根到叶子节点数字之和 | Solution.java | <缺> | <缺> |
二叉树的前序遍历 | Solution.java | <缺> | 题解 |
94. 二叉树的中序遍历 | Solution.java | <缺> | <缺> |
145. 二叉树的后序遍历 | Solution.java | <缺> | <缺> |
102. 二叉树的层序遍历 | Solution.java | <缺> | <缺> |
701. 二叉搜索树中的插入操作 | Solution.java | Solution.go | <缺> |
222. 完全二叉树的节点个数 | Solution.java | <缺> | 题解 |
103. 二叉树的锯齿形层序遍历 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
根据数字二进制下1的数目排序 | Solution.java | <缺> | 题解 |
题目 | Java | Go | JS | 题解 |
---|---|---|---|---|
下一个排列 | Solution.java | Solution.go | <缺> | 题解 |
1010. 总持续时间可被 60 整除的歌曲 | Solution.java | Solution.go | <缺> | 题解 |
976. 三角形的最大周长 | Solution.java | <缺> | solution.js | <缺> |
204. 计数质数 | Solution.java | <缺> | <缺> | 题解 |
118. 杨辉三角 | Solution.java | <缺> | <缺> | <缺> |
剑指 Offer 14- I. 剪绳子 | Solution.java | <缺> | <缺> | 题解 |
剑指 Offer 14- II. 剪绳子 II | Solution.java | <缺> | <缺> | 题解 |
题目 | Java | 题解 |
---|---|---|
1306. 跳跃游戏 III | Solution.java | 题解 |
剑指 Offer 29. 顺时针打印矩阵 | Solution.java | 题解 |
题目 | Java | Python | JS | 题解 |
---|---|---|---|---|
剑指 Offer 10- I. 斐波那契数列 | Solution.java | <缺> | <缺> | 题解 |
剑指 Offer 10- II. 青蛙跳台阶问题 | Solution.java | <缺> | <缺> | 题解 |
70. 爬楼梯 | Solution.java | <缺> | <缺> | 题解 |
746. 使用最小花费爬楼梯 | Solution.java | <缺> | <缺> | 题解 |
198. 打家劫舍 | Solution.java | <缺> | solution.js | 题解 |
64. 最小路径和 | Solution.java | <缺> | <缺> | 题解 |
303. 区域和检索 - 数组不可变 | Solution.java | <缺> | solution.js | 题解 |
413. 等差数列划分 | Solution.java | <缺> | solution.js | <缺> |
62. 不同路径 | Solution.java | <缺> | <缺> | 题解 |
343. 整数拆分 | Solution.java | <缺> | <缺> | 题解 |
322. 零钱兑换 | Solution.java | <缺> | <缺> | 题解 |
746. 使用最小花费爬楼梯(旧版题解) | Solution.java | <缺> | <缺> | 题解 |
121. 买卖股票的最佳时机 | Solution.java | <缺> | <缺> | 题解 |
714. 买卖股票的最佳时机含手续费 | Solution.java | <缺> | <缺> | 题解 |
309. 最佳买卖股票时机含冷冻期 | Solution.java | <缺> | <缺> | 题解 |
剑指 Offer 49. 丑数 | Solution.java | <缺> | <缺> | 题解 |
剑指 Offer 47. 礼物的最大价值 | Solution.java | <缺> | <缺> | 题解 |
123. 买卖股票的最佳时机 III | Solution.java | <缺> | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
53. 最大子序和 | Solution.java | Solution.go | 题解 |
1109. 航班预订统计 | Solution.java | <缺> | 题解 |
1094. 拼车 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
长度最小的子数组 | Solution.java | Solution.go | 题解 |
无重复字符的最长字串 | Solution.java | Solution.go | 题解 |
剑指 Offer 59 - I. 滑动窗口的最大值 | Solution.java | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
402. 移掉K位数字 | Solution.java | <缺> | 题解 |
321. 拼接最大数 | Solutionjava | <缺> | 题解 |
962. 最大宽度坡 | Solution.java | <缺> | 题解 |
739. 每日温度 | Solution.java | <缺> | 题解 |
题目 | Java | Go | JS | 题解 |
---|---|---|---|---|
划分字母区间 | Solution.java | <缺> | <缺> | 题解 |
买卖股票的最佳时机 II | Solution.java | Solution.go | <缺> | 题解 |
406. 根据身高重建队列 | Solution.java | <缺> | <缺> | <缺> |
134. 加油站 | Solution.java | <缺> | <缺> | 题解 |
452. 用最少数量的箭引爆气球 | Solution.java | <缺> | <缺> | 题解 |
1518. 换酒问题 | Solution.java | <缺> | <缺> | <缺> |
767. 重构字符串 | Solution.java | <缺> | <缺> | 题解 |
861. 翻转矩阵后的得分 | Solution.java | <缺> | <缺> | 题解 |
860. 柠檬水找零 | Solution.java | solution.go | <缺> | 题解 |
605. 种花问题 | Solution.java | solution.go | <缺> | 题解 |
649. Dota2 参议院 | Solution.java | <缺> | solution.js | 题解 |
738. 单调递增的数字 | Solution.java | <缺> | <缺> | 题解 |
135. 分发糖果 | Solution.java | <缺> | <缺> | 题解 |
455. 分发饼干 | Solution.java | <缺> | <缺> | 题解 |
881. 救生艇 | Solution.java | <缺> | <缺> | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
最接近原点的 K 个点:最大堆解法 | Solution.java | <缺> | 题解 |
最接近原点的 K 个点:快排解法 | Solution.java | Solution.go | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
最接近原点的 K 个点 | Solution.java | Solution.go | 题解 |
1030. 距离顺序排列矩阵单元格 | Solution.java | <缺> | 题解 |
1370. 上升下降字符串 | Solution.java | <缺> | <缺> |
75. 颜色分类 | Solution.java | Solution.go | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
17. 电话号码的字母组合 | Solution.java | <缺> | 题解 |
257. 二叉树的所有路径 | Solution.java | <缺> | 题解 |
695. 岛屿的最大面积 | Solution.java | solution.go | 题解 |
200. 岛屿数量 | Solution.java | solution.go | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
单词接龙 | Solution.java | <缺> | <缺> |
题目 | Java | 题解 |
---|---|---|
547. 省份数量 | Solution.java | 题解 |
684. 冗余连接 | Solution.java | 题解 |
1202. 交换字符串中的元素 | Solution.java | 题解 |
题目 | Java | Go | 题解 |
---|---|---|---|
实现 Trie (前缀树) | Solution.java | <缺> | 题解 |
剑指 Offer 59 - II. 队列的最大值 | Solution.java | <缺> | 题解 |
题目 | Java | Go | JS | 题解 |
---|---|---|---|---|
岛屿的周长 | Solution.java | <缺> | <缺> | 题解 |
插入区间 | Solution.java | solution.go | <缺> | 题解 |
319. 灯泡开关 | Solution.java | solution.go | solution.js | 题解 |