目录
基础算法
返回目录
| # |
English Title |
Chinese Title |
Solution |
| 1 |
InB_ArrayAndNotInA_Array |
找出在数组 B 中而不在数组 A 中的数 |
Java |
| 2 |
BubbleSort |
冒泡排序 |
Java |
| 3 |
SelectionSort |
选择排序 |
Java |
| 4 |
InsertionSort |
插入排序 |
Java |
| 5 |
Recursive |
递归 |
Java |
| 6 |
MergeSort |
归并排序 |
Java |
| 7 |
SmallSum |
小和问题 |
Java |
| 8 |
ArrayDivision |
数组划分问题 |
Java |
| 9 |
NetherlandsFlag |
荷兰国旗问题 |
Java |
| 10 |
QuickSort |
快速排序 |
Java |
| 11 |
HeapSort |
堆排序 |
Java |
| 12 |
BucketSort |
桶排序 |
Java |
| 13 |
ArrayStack |
用数组实现固定的栈 |
Java |
| 14 |
ArrayQueue |
用数组实现固定的队列 |
Java |
| 16 |
StackAndQueueConvert |
栈与队列相互实现 |
Java |
| 17 |
PrintMatrixSpiralOrder |
顺时针打印矩阵 |
Java |
| 18 |
RotateMatrix |
将正方形顺时针旋转 90° |
Java |
| 19 |
ReverseList |
反转单向链表和双向链表 |
Java |
| 20 |
ZigZagPrintMatrix |
之字形打印矩阵 |
Java |
| 21 |
FindNumInSortedMatrix |
在排好序的矩阵中找到指定的数 |
Java |
| 22 |
IsPalindromeList |
判断一个链表是否是回文结构 |
Java |
| 23 |
SmallerEqualBiggerInList |
根据给定的值划分单向链表 |
Java |
| 25 |
FindFirstIntersectNode |
两个单链表相交的一系列问题 |
Java |
| 26 |
PreInPosTraversal |
二叉树的先序、中序、后序、层次遍历(递归与非递归) |
Java |
| 27 |
IsBinarySearchTree |
判断一棵树是否是二叉搜索树 |
Java |
| 28 |
IsCompleteBinaryTree |
判断一棵树是否是完全二叉树 |
Java |
| 29 |
CompleteBinaryTreeNodeNumber |
求完全二叉树节点的个数 |
Java |
| 30 |
HashMap |
哈希表的基本使用 |
Java |
| 31 |
RandomPool |
实现 RandomPool |
Java |
| 32 |
UnionFind |
并查集的查找与合并操作 |
Java |
| 33 |
Islands |
岛问题 |
Java |
| 34 |
TrieTree |
前缀树 |
Java |
| 35 |
LowestLexicography |
字典序最小的字符串 |
Java |
| 36 |
LessMoney |
分割金条的最小代价 |
Java |
| 37 |
MaximizedCapital |
项目的最大钱数 |
Java |
| 38 |
BestArrange |
最多的宣讲场次 |
Java |
| 39 |
Factorial |
求 n 的阶乘 |
Java |
| 40 |
TowerOfHanoi |
汉诺塔问题 |
Java |
| 41 |
PrintAllSubsquences |
打印一个字符串的全部子序列 |
Java |
| 42 |
CowNumber |
母牛生崽问题 |
Java |
| 43 |
MinPathInMatrix |
矩阵中的最小路径和 |
Java |
| 44 |
IsAimValueInArray |
数组中的数累加起来等于目标值 |
Java |
| 45 |
0-1 Knapsack Problem |
0-1 背包问题 |
Java |
| 46 |
0-1 Knapsack Problem Optimizes |
0-1 背包问题的优化 |
Java |
| 47 |
Completeness Knapsack Problem |
完全背包问题 |
Java |
| 48 |
Shortest Path Problem |
最短路径问题 |
Java |
进阶算法
返回目录
| # |
English Title |
Chinese Title |
Solution |
| 1 |
KMP |
字符串匹配算法 |
Java |
| 2 |
ShortestContainTwiceOriginalString |
包含两次原始字符串的最短字符串 |
Java |
| 3 |
T1SubtreeEqualsT2 |
树中是否有一棵子树与给定的树对应 |
Java |
| 4 |
Manacher |
字符串的最长回文子串 |
Java |
| 5 |
ShortestEnd |
在字符串后添加字符变成回文串 |
Java |
| 6 |
BFPRT |
找到前 K 小的数或前 K 大的数 |
Java |
| 7 |
MaxWindow |
生成窗口最大值数组 |
Java |
| 8 |
AllLessNumSubArray |
最大值减去最小值小于等于 num 的子数组数量 |
Java |
| 9 |
GetMaxTree |
得到满足条件的最大二叉树 |
Java |
| 10 |
MaxRecSize |
求最大子矩阵的大小 |
Java |
| 11 |
MountainsAndFalme |
可见的山峰对的数量 |
Java |
| 12 |
MorrisTraversal |
Morris 前中后遍历 |
Java |
| 13 |
BuildingOutline |
天际线问题 |
Java |
| 14_01 |
LongestSumSubArrayLength |
累加和等于 k 的最长子数组的长度(正数、负数、零) |
Java |
| 14_02 |
LongestSumSubArrayLength |
累加和等于 k 的最长子数组的长度(全是正数) |
Java |
| 14_03 |
LongestSumSubArrayLength |
累加和小于等于 k 的最长子数组的长度(正数、负数、零) |
Java |
| 15 |
MostEOR |
数组中的异或和为 0 的最多划分 |
Java |
| 16 |
BiggestSubBSFInTree |
构建最大搜索二叉子树 |
Java |
| 17 |
MaxDistanceInTree |
二叉树上的最远距离 |
Java |
| 18 |
MaxHappy |
最大的活跃值 |
Java |
| 19 |
LRU |
最近最少使用 |
Java |
| 20 |
MaxEOR |
子数组的最大异或和 |
Java |
| 21 |
MaxCoinsWayAmount |
最多的换钱方法 |
Java |
| 22 |
RegularExpressionMatch |
正则匹配问题 |
Java |
| 23 |
RotateString |
旋转字符串 |
Java |
| 24 |
QueryBox |
查询给定范围内的个数 |
Java |
| 25 |
ReversePair |
求解符合要求的逆序数组 |
Java |
| 26 |
changeString |
整体交换字符串(同 23 题) |
Java |
| 27 |
LongestSubstring |
最长公共字串的长度 |
Java |
剑指Offer
返回目录
| # |
English Title |
Chinese Title |
Solution |
| 3 |
FindDuplicationInArray |
数组中重复的数字 |
Java |
| 4 |
FindInPartiallySortedMatrix |
二维数组中的查找 |
Java |
| 5 |
ReplaceSpaces |
替换空格 |
Java |
| 6 |
PrintListInReversedOrder |
从尾到头打印链表 |
Java |
| 7 |
ConstructBinaryTree |
重建二叉树 |
Java |
| 8 |
NextNodeInBinaryTrees |
二叉树的下一个结点 |
Java |
| 9 |
QueueWithTwoStacks |
用两个栈实现队列 |
Java |
| 10_01 |
Fibonacci |
斐波那契数列 |
Java |
| 10_02 |
Climbing Stairs |
爬楼梯 |
Java |
| 10_03 |
Climbing StairsⅡ |
爬楼梯Ⅱ |
Java |
| 11_01 |
MinNumberInRotatedArray |
旋转数组的最小数字 |
Java |
| 11_02 |
MinNumberInRotatedArray Ⅱ |
旋转数组的最小数字 Ⅱ |
Java |
| 12 |
StringPathInMatrix |
矩阵中的路径 |
Java |
| 13 |
RobotMove |
机器人的运动范围 |
Java |
| 14_01 |
CuttingRope |
剪绳子 |
Java |
| 14_02 |
CuttingRope Ⅱ |
剪绳子Ⅱ |
Java |
| 15 |
NumberOf1InBinary |
二进制中 1 的个数 |
Java |
| 16 |
Power |
数值的整数次方 |
Java |
| 17 |
Print1ToMaxOfNDigits |
打印从 1 到最大的 n 位数 |
Java |
| 18_01 |
DeleteNodeInList |
在 O(1) 时间内删除链表节点 |
Java |
| 18_02 |
DeleteDuplicatedNode |
删除链表中重复的结点 |
Java |
| 18_03 |
DeleteDuplicatedNodeⅡ |
删除链表中重复的结点Ⅱ |
Java |
| 19 |
RegularExpressionsMatching |
正则表达式匹配 |
Java |
| 20 |
NumericStrings |
表示数值的字符串 |
Java |
| 21 |
ReorderArray |
调整数组顺序使奇数位于偶数前面 |
Java |
| 22 |
KthNodeFromEnd |
链表中倒数第 K 个结点 |
Java |
| 23 |
EntryNodeInListLoop |
链表中环的入口结点 |
Java |
| 24 |
ReverseList |
反转链表 |
Java |
| 25 |
MergeSortedLists |
合并两个排序的链表 |
Java |
| 26 |
SubstructureInTree |
树的子结构 |
Java |
| 27 |
MirrorOfBinaryTree |
二叉树的镜像 |
Java |
| 28 |
SymmetricalBinaryTree |
对称的二叉树 |
Java |
| 29 |
PrintMatrix |
顺时针打印矩阵 |
Java |
| 30 |
MinInStack |
包含 min 函数的栈 |
Java |
| 31 |
StackPushPopOrder |
栈的压入、弹出序列 |
Java |
| 32_01 |
PrintTreeFromTopToBottom |
不分行从上往下打印二叉树 |
Java |
| 32_02 |
PrintTreesInLines |
分行从上往下打印二叉树 |
Java |
| 32_03 |
PrintTreesInZigzag |
之字形打印二叉树 |
Java |
| 33 |
VerifySquenceOfBST |
二叉搜索树的后序遍历序列 |
Java |
| 34 |
PathInTree |
二叉树中和为某一值的路径 |
Java |
| 35 |
CopyComplexList |
复杂链表的复制 |
Java |
| 36 |
ConvertBinarySearchTree |
二叉搜索树与双向链表 |
Java |
| 37 |
SerializeBinaryTrees |
序列化二叉树 |
Java |
| 38 |
StringPermutation |
字符串的排列 |
Java |
| 39 |
MoreThanHalfNumber |
数组中出现次数超过一半的数字 |
Java |
| 40 |
KLeastNumbers |
最小的 K 个数 |
Java |
| 41_01 |
StreamMedian |
数据流中的中位数 |
Java |
| 41_02 |
FirstAppearingOnce |
字符流中第一个不重复的字符 |
Java |
| 42 |
GreatestSumOfSubarrays |
连续子数组的最大和 |
Java |
| 43 |
NumberOf1Between1AndN |
从 1 到 n 整数中 1 出现的次数 |
Java |
| 44 |
DigitsInSequence |
数字序列中某一位的数字 |
Java |
| 45 |
SortArrayForMinNumber |
把数组排成最小的数 |
Java |
| 46 |
TranslateNumbersToStrings |
把数字翻译成字符串 |
Java |
| 47 |
MaxValueOfGifts |
礼物的最大价值 |
Java |
| 48 |
LongestSubstringWithoutDup |
最长不含重复字符的子字符串 |
Java |
| 49 |
UglyNumber |
丑数 |
Java |
| 50 |
FirstNotRepeatingChar |
第一个只出现一次的字符位置 |
Java |
| 51 |
InversePairs |
数组中的逆序对 |
Java |
| 52 |
FirstCommonNodesInLists |
两个链表的第一个公共结点 |
Java |
| 53_01 |
NumberOfK |
数字在排序数组中出现的次数 |
Java |
| 53_02 |
MissingNumber |
0~n-1 中缺失的数字 |
Java |
| 53_03 |
IntegerIdenticalToIndex |
数组中数值和下标相等的元素 |
Java |
| 54 |
KthNodeInBST |
二叉搜索树的第 K 大结点 |
Java |
| 55_01 |
TreeDepth |
二叉树的深度 |
Java |
| 55_02 |
BalancedBinaryTree |
平衡二叉树 |
Java |
| 56_01 |
NumbersAppearOnce |
数组中只出现一次的两个数字 |
Java |
| 56_02 |
NumberAppearingOnce |
数组中唯一只出现一次的数字 |
Java |
| 57_01 |
TwoNumbersWithSum |
和为 S 的两个数字 |
Java |
| 57_02 |
ContinuousSquenceWithSum |
和为 S 的连续正数序列 |
Java |
| 58_01 |
ReverseWordsInSentence |
翻转单词顺序列 |
Java |
| 58_02 |
LeftRotateString |
左旋转字符串 |
Java |
| 59_01 |
MaxInSlidingWindow |
滑动窗口的最大值 |
Java |
| 59_02 |
MaxInQueue |
队列的最大值 |
Java |
| 60 |
DicesProbability |
n 个骰子的点数 |
Java |
| 61 |
ContinousCards |
扑克牌中的顺子 |
Java |
| 62 |
LastNumberInCircle |
圆圈中最后剩下的数字 |
Java |
| 63 |
MaximalProfit |
股票的最大利润 |
Java |
| 64 |
Accumulate |
求 1+2+3+...+n |
Java |
| 65 |
AddTwoNumbers |
不用加减乘除做加法 |
Java |
| 66 |
ConstuctArray |
构建乘积数组 |
Java |
| 67 |
StringToInt |
把字符串转换成整数 |
Java |
| 68_01 |
LowestCommonAncestorInBST |
二叉搜索树的最近公共祖先 |
Java |
| 68_02 |
LowestCommonAncestor |
二叉树的最近公共祖先 |
Java |
LeetCode
返回目录
按照不同的类别进行分类,参考自 CyC2018/CS-Notes 。
算法思想相关
01.双指针
02.动态规划
03.贪心
04.二分查找
05.分治
06.搜索
07.排序
08.数学
数据结构相关
返回目录
01.数组和矩阵
02.字符串
03.树
04.哈希表
05.栈和队列
06.图
07.位运算
08.链表
Stars
