jinrunheng / algorithm

这是一个算法题仓库,按照不同的tag整理,有大量的来源于各种书籍以及LeetCode的题目,并且有学习笔记与题解,欢迎您的fork与star~~

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

algorithm

这是一个算法学习仓库,有我个人算法学习整理的笔记,并且有按照不同tag整理的来源于各种书籍,以及LeetCode的题目,几乎每一道题目都有相对应的题解;所有题目使用的语言为Java;有部分题目提供了其他语言的代码

感谢您的fork与star~~ ❤ ❤ ❤

学习笔记

算法与数据结构

1. 线性查找
2. 排序基础
3. 数据结构基础:动态数组,栈和队列

算法初级部分

1. 认识复杂度和简单排序算法
2. O(N*logN)的排序算法
3.

题目整理

如果有错误需要更正请提issue,每一道题并不一定是最优解,如果你有更好的代码,欢迎提PR

Dichotomy

题目 Java Go JS 题解
374. 猜数字大小 Solution.java Solution.go solution.js <缺>
74. 搜索二维矩阵 Solution.java <缺> <缺> <缺>
34. 在排序数组中查找元素的第一个和最后一个位置 Solution.java <缺> <缺> 题解

String

题目 Java 题解
剑指 Offer 05. 替换空格 Solution.java 题解
剑指 Offer 58 - II. 左旋转字符串 Solution.java 题解

Two Pointers , Fast & Slow Pointers

题目 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 <缺> 题解

Linked List

题目 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 <缺> 题解

Stack

题目 Java Go 题解
逆波兰表达式求值 Solution.java <缺> <缺>
20. 有效的括号 Solution.java <缺> 题解
155. 最小栈 Solution.java <缺> 题解
232. 用栈实现队列 Solution.java <缺> 题解
225. 用队列实现栈 Solution.java <缺> 题解

Queue

题目 Java Go 题解
LCP 07. 传递信息 Solution.java <缺> <缺>

Hash

题目 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 <缺> <缺> <缺>

Tree

题目 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 <缺> 题解

Bitewise Operation

题目 Java Go 题解
根据数字二进制下1的数目排序 Solution.java <缺> 题解

Math

题目 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 <缺> <缺> 题解

Recursion

题目 Java 题解
1306. 跳跃游戏 III Solution.java 题解
剑指 Offer 29. 顺时针打印矩阵 Solution.java 题解

DP

题目 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 <缺> <缺> 题解

Prefix-Sum

题目 Java Go 题解
53. 最大子序和 Solution.java Solution.go 题解
1109. 航班预订统计 Solution.java <缺> 题解
1094. 拼车 Solution.java <缺> 题解

Sliding-Window

题目 Java Go 题解
长度最小的子数组 Solution.java Solution.go 题解
无重复字符的最长字串 Solution.java Solution.go 题解
剑指 Offer 59 - I. 滑动窗口的最大值 Solution.java <缺> 题解

Monotonous-Stack

题目 Java Go 题解
402. 移掉K位数字 Solution.java <缺> 题解
321. 拼接最大数 Solutionjava <缺> 题解
962. 最大宽度坡 Solution.java <缺> 题解
739. 每日温度 Solution.java <缺> 题解

Greedy

题目 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 <缺> <缺> 题解

TopK

题目 Java Go 题解
最接近原点的 K 个点:最大堆解法 Solution.java <缺> 题解
最接近原点的 K 个点:快排解法 Solution.java Solution.go 题解

Sort

题目 Java Go 题解
最接近原点的 K 个点 Solution.java Solution.go 题解
1030. 距离顺序排列矩阵单元格 Solution.java <缺> 题解
1370. 上升下降字符串 Solution.java <缺> <缺>
75. 颜色分类 Solution.java Solution.go 题解

DFS

题目 Java Go 题解
17. 电话号码的字母组合 Solution.java <缺> 题解
257. 二叉树的所有路径 Solution.java <缺> 题解
695. 岛屿的最大面积 Solution.java solution.go 题解
200. 岛屿数量 Solution.java solution.go 题解

BFS

题目 Java Go 题解
单词接龙 Solution.java <缺> <缺>

Union Find

题目 Java 题解
547. 省份数量 Solution.java 题解
684. 冗余连接 Solution.java 题解
1202. 交换字符串中的元素 Solution.java 题解

Data Structure Design

题目 Java Go 题解
实现 Trie (前缀树) Solution.java <缺> 题解
剑指 Offer 59 - II. 队列的最大值 Solution.java <缺> 题解

Other

题目 Java Go JS 题解
岛屿的周长 Solution.java <缺> <缺> 题解
插入区间 Solution.java solution.go <缺> 题解
319. 灯泡开关 Solution.java solution.go solution.js 题解

About

这是一个算法题仓库,按照不同的tag整理,有大量的来源于各种书籍以及LeetCode的题目,并且有学习笔记与题解,欢迎您的fork与star~~

License:Apache License 2.0


Languages

Language:Java 92.8%Language:Go 5.0%Language:JavaScript 2.0%Language:Python 0.2%