An open API service indexing awesome lists of open source software.

https://github.com/sunfusheng/algo

这是一款 Kotlin 语言版本的 Android 客户端本地化展示 Java 语言编写的面试算法 ( Algorithm ),会持续更新!
https://github.com/sunfusheng/algo

algo algorithm binary-tree leetcode linkedlist queue stack

Last synced: 3 months ago
JSON representation

这是一款 Kotlin 语言版本的 Android 客户端本地化展示 Java 语言编写的面试算法 ( Algorithm ),会持续更新!

Awesome Lists containing this project

README

        

# Algo

这是一款 Kotlin 语言版本的 Android 客户端本地化展示 Java 语言编写的面试算法 ( Algorithm ),会持续更新!

# LeetCode算法

* 数组
* [1.两数之和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/TwoSum.java)
* [4.寻找两个有序数组的中位数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindMedianSortedArrays.java)
* [11.盛最多水的容器](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/HolderMaxWater.java)
* [15.三数之和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/ThreeSum.java)
* [26.删除排序数组中的重复项](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/RemoveDuplicates.java)
* [27.移除元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/RemoveElement.java)
* [33.搜索旋转排序数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/RotateSortArray.java)
* [35.搜索插入位置](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/SearchInsert.java)
* [42.接雨水](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/HoldRainWater.java)
* [46.全排列](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/Permute.java)
* [53.最大子序和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MaxSubArray.java)
* [54.螺旋矩阵](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/SpiralOrder.java)
* [56.合并区间](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MergeArrayInterval.java)
* [66.加一](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/PlusOne.java)
* [78.子集](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/SubSets.java)
* [88.合并两个有序数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MergeSortedArray.java)
* [118.杨辉三角](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/YangHuiTriangle.java)
* [119.杨辉三角 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/YangHuiTriangleII.java)
* [121.买卖股票的最佳时机](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MaxProfit.java)
* [122.买卖股票的最佳时机 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MaxProfitII.java)
* [128.最长连续序列](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/LongestConsecutive.java)
* [135.分发糖果](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/DistributeCandy.java)
* [136.只出现一次的数字](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/SingleNumber.java)
* [167.两数之和 II - 输入有序数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/TwoSumII.java)
* [169.多数元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MajorityElement.java)
* [189.旋转数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/RotateArray.java)
* [198.打家劫舍](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/Rob.java)
* [200.岛屿数量](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/NumIslands.java)
* [215.数组中的第K个最大元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindKthLargest.java)
* [217.存在重复元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/ContainsDuplicate.java)
* [219.存在重复元素 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/ContainsNearbyDuplicate.java)
* [283.移动零](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MoveZeroes.java)
* [303.区域和检索 - 数组不可变](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/NumArray.java)
* [322.零钱兑换](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/CoinChange.java)
* [347.前 K 个高频元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/TopKFrequent.java)
* [349.两个数组的交集](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/Intersection.java)
* [350.两个数组的交集 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/IntersectionII.java)
* [414.第三大的数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/ThirdMax.java)
* [447.回旋镖的数量](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/NumberOfBoomerangs.java)
* [448.找到所有数组中消失的数字](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindDisappearedNumbers.java)
* [453.最小移动次数使数组元素相等](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MinMoves.java)
* [455.分发饼干](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindContentChildren.java)
* [463.岛屿的周长](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/IslandPerimeter.java)
* [485.最大连续1的个数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindMaxConsecutiveOnes.java)
* [496.下一个更大元素 I](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/NextGreaterElement.java)
* [506.相对名次](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindRelativeRanks.java)
* [532.数组中的K-diff数对](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindPairs.java)
* [560.和为K的子数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/SubArraySum.java)
* [561.数组拆分 I](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/ArrayPairSum.java)
* [566.重塑矩阵](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/MatrixReshape.java)
* [575.分糖果](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/DistributeCandies.java)
* [581.最短无序连续子数组](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/FindUnsortedSubArray.java)
* [739.每日温度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Array/DailyTemperatures.java)

* 数字
* [7.整数反转](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ReverseInt.java)
* [9.回文数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/PalindromeNum.java)
* [13.罗马数字转整数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/RomeToInt.java)
* [67.二进制求和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/AddBinary.java)
* [69.x的平方根](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/MySqrt.java)
* [70.爬楼梯](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ClimbStairs.java)
* [168.Excel表列名](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ConvertToTitle.java)
* [171.Excel表列序号](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/TitleToNumber.java)
* [172.阶乘后的零](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/TrailingZeroes.java)
* [190.颠倒二进制位](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ReverseBits.java)
* [191.位1的个数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/HammingWeight.java)
* [202.快乐数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsHappy.java)
* [204.计数质数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/CountPrimes.java)
* [231.2的幂](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsPowerOfTwo.java)
* [258.各位相加](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/AddDigits.java)
* [263.丑数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsUgly.java)
* [268.缺失数字](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/MissingNumber.java)
* [292.Nim 游戏](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/CanWinNim.java)
* [299.猜数字游戏](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/GetHint.java)
* [326.3的幂](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsPowerOfThree.java)
* [342.4的幂](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsPowerOfFour.java)
* [367.有效的完全平方数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/IsPerfectSquare.java)
* [371.两整数之和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/GetSum.java)
* [374.猜数字大小](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/GuessNumber.java)
* [401.二进制手表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ReadBinaryWatch.java)
* [405.数字转换为十六进制数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ToHex.java)
* [412.Fizz Buzz](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/FizzBuzz.java)
* [441.排列硬币](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ArrangeCoins.java)
* [461.汉明距离](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/HammingDistance.java)
* [476.数字的补数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/FindComplement.java)
* [492.构造矩形](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ConstructRectangle.java)
* [504.七进制数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/ConvertToBase7.java)
* [507.完美数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/CheckPerfectNumber.java)
* [509.斐波那契数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Number/Fibonacci.java)

* 字符串
* [3.无重复字符的最长子串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LengthOfLongestSubstring.java)
* [5.最长回文子串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LongestPalindrome.java)
* [6.Z字形变换](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ZShapedConvert.java)
* [8.字符串转换整数 (atoi)](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/MyAtoi.java)
* [14.最长公共前缀](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LongestCommonPrefix.java)
* [17.电话号码的字母组合](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LetterCombinations.java)
* [20.有效的括号](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ValidBrackets.java)
* [28.实现strStr()](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ImplStrStr.java)
* [38.外观数列](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/CountAndSay.java)
* [58.最后一个单词的长度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LengthOfLastWord.java)
* [93.复原IP地址](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/RestoreIpAddresses.java)
* [125.验证回文串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/IsPalindrome.java)
* [151.翻转字符串里的单词](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ReverseWords.java)
* [205.同构字符串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/IsIsomorphic.java)
* [242.有效的字母异位词](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/IsAnagram.java)
* [290.单词规律](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/WordPattern.java)
* [344.反转字符串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ReverseString.java)
* [345.反转字符串中的元音字母](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ReverseVowels.java)
* [383.赎金信](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/CanConstruct.java)
* [387.字符串中的第一个唯一字符](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/FirstUniqChar.java)
* [389.找不同](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/FindTheDifference.java)
* [392.判断子序列](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/IsSubsequence.java)
* [394.字符串解码](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/DecodeString.java)
* [409.最长回文串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/BuildLongestPalindrome.java)
* [415.字符串相加](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/AddStrings.java)
* [434.字符串中的单词数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/CountSegments.java)
* [438.找到字符串中所有字母异位词](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/FindAnagrams.java)
* [443.压缩字符串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/Compress.java)
* [459.重复的子字符串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/RepeatedSubstringPattern.java)
* [482.密钥格式化](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/LicenseKeyFormatting.java)
* [500.键盘行](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/FindWords.java)
* [520.检测大写字母](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/DetectCapitalUse.java)
* [521.最长特殊序列 Ⅰ](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/FindLUSlength.java)
* [541.反转字符串 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ReverseStr.java)
* [551.学生出勤记录 I](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/CheckRecord.java)
* [557.反转字符串中的单词 III](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/ReverseWordsIII.java)
* [647.回文子串](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/String/CountPalindrome.java)

* 链表
* [2.两数相加](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/AddTwoNumbers.java)
* [21.合并两个有序链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/MergeTwoLists.java)
* [23.合并K个排序链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/MergeKLists.java)
* [24.两两交换链表中的节点](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/SwapPairs.java)
* [25.K 个一组翻转链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/ReverseKGroup.java)
* [83.删除排序链表中的重复元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/DeleteDuplicates.java)
* [141.环形链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/HasCycle.java)
* [146.LRU缓存机制](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/LRUCache.java)
* [148.排序链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/SortListNode.java)
* [155.最小栈](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/MinStack.java)
* [160.相交链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/GetIntersectionNode.java)
* [203.移除链表元素](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/RemoveElements.java)
* [206.反转链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/ReverseList.java)
* [225.用队列实现栈](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/MyStack.java)
* [232.用栈实现队列](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/MyQueue.java)
* [234.回文链表](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/IsPalindrome.java)
* [237.删除链表中的节点](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/DeleteNode.java)
* [445.两数相加 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/LinkedList/AddTwoNumbersII.java)

* 二叉树
* [94.二叉树的中序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/InorderTraversal.java)
* [96.不同的二叉搜索树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/BSTNum.java)
* [100.相同的树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/SameTree.java)
* [101.对称二叉树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/IsSymmetric.java)
* [102.二叉树的层序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/LevelOrder.java)
* [103.二叉树的锯齿形层次遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/ZigzagLevelOrder.java)
* [104.二叉树的最大深度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/MaxDepth.java)
* [107.二叉树的层次遍历 II](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/LevelOrderBottom.java)
* [108.将有序数组转换为二叉搜索树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/SortedArrayToBST.java)
* [110.平衡二叉树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/IsBalanced.java)
* [111.二叉树的最小深度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/MinDepth.java)
* [112.路径总和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/HasPathSum.java)
* [144.二叉树的前序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/PreorderTraversal.java)
* [145.二叉树的后序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/PostorderTraversal.java)
* [199.二叉树的右视图](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/RightSideView.java)
* [226.翻转二叉树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/InvertTree.java)
* [235.二叉搜索树的最近公共祖先](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/LowestCommonAncestor.java)
* [236.二叉树的最近公共祖先](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/LowestCommonAncestorII.java)
* [257.二叉树的所有路径](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/BinaryTreePaths.java)
* [404.左叶子之和](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/SumOfLeftLeaves.java)
* [437.路径总和 III](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/PathSumIII.java)
* [450.删除二叉搜索树中的节点](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/DeleteBinarySearchTreeNode.java)
* [501.二叉搜索树中的众数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/FindMode.java)
* [530.二叉搜索树的最小绝对差](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/GetMinimumDifference.java)
* [538.把二叉搜索树转换为累加树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/ConvertBST.java)
* [543.二叉树的直径](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/DiameterOfBinaryTree.java)
* [559.N叉树的最大深度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/MultiMaxDepth.java)
* [563.二叉树的坡度](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/FindTilt.java)
* [572.另一个树的子树](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/IsSubtree.java)
* [589.N叉树的前序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/MultiWayTreePreOrder.java)
* [590.N叉树的后序遍历](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/BinaryTree/MultiWayTreePostOrder.java)

* 查找排序
* [278.第一个错误的版本](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/FindSort/FirstBadVersion.java)
* [475.供暖器](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/FindSort/FindRadius.java)

* 面试题
* [面试题 01.07. 旋转矩阵](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Interview/RotateMatrix.java)
* [面试题 #.01. 无序数组的中位数](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Interview/UnorderedArrayMedian.java)
* [面试题 #.02. 生产者消费者模式](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Interview/ProducerConsumer.java)
* [面试题 #.03. 无序数组排序,负数在前正数在后且有序](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Interview/PositiveNegative.java)
* [面试题 #.04. 泛型化的二分搜索](/module-leetcode/src/main/java/com/wangcheng/leetcode/LeetCode/Interview/BinarySearch.java)


# IT名企算法与数据结构题目最优解

* 栈和队列问题
* [设计一个有getMin功能的栈](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/MinStack.java)
* [用两个栈实现队列](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/TwoStacksQueue.java)
* [如何仅用递归函数和栈操作逆序一个栈](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/RecursionReverseStack.java)
* [猫狗队列](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/CatDogQueue.java)
* [用一个栈实现另一个栈的排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/SortStackByStack.java)
* [用栈来求解汉诺塔问题](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/Hanoi.java)
* [生成窗口最大值数组](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/MaxWindow.java)
* [单调栈结构](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/NearLessNum.java)
* [求最大子矩阵的大小](/module-algo/src/main/java/com/sunfusheng/algo/Algo/StackQueue/MaxRecSize.java)

* 链表问题
* [打印两个有序链表的公共部分](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/PrintCommonPart.java)
* [删除单链表和双链表倒数第K个节点](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/RemoveLastKthNode.java)
* [删除链表的中间节点和a/b处的节点](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/RemoveMidNode.java)
* [反转单向链表和双向链](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/ReverseLinkedList.java)
* [反转部分单向链表](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/ReversePartLinkedList.java)
* [环形单链表的约瑟夫问题](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/Josephus.java)
* [判断一个链表是否为回文结构](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/LinkedListPalindrome.java)
* [将单向链表按某值划分成左边小、中间相等、右边大的形式](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/Partition.java)
* [复制含有随机指针节点的链表](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/CopyRandomLinkedList.java)
* [两个单链表生成相加链表](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/AddTwoLinkedList.java)
* [两个单链表相交的一系列问题](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/IntersectNode.java)
* [将单链表的每K个节点之间逆序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/LinkedList/ReverseKNodes.java)

* 二叉树问题
* [用递归和非递归方式实现二叉树先序、中序、后序遍历](/module-algo/src/main/java/com/sunfusheng/algo/Algo/BinaryTree/BinaryTreeTraverse.java)
* [打印二叉树的边界节点](/module-algo/src/main/java/com/sunfusheng/algo/Algo/BinaryTree/PrintEdgeNodes.java)
* [二叉树的序列化和反序列化](/module-algo/src/main/java/com/sunfusheng/algo/Algo/BinaryTree/SerializeDeserializeBinaryTree.java)

* 排序算法
* [冒泡排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/BubbleSort.java)
* [选择排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/SelectionSort.java)
* [插入排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/InsertionSort.java)
* [计数排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/CountSort.java)
* [快速排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/QuickSort.java)
* [归并排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/MergeSort.java)
* [堆排序](/module-algo/src/main/java/com/sunfusheng/algo/Algo/Sort/HeapSort.java)


### 运行Java main

.idea/gradle.xml GradleProjectSettings标签下添加:

### 贡献者

[DIY-green](https://github.com/DIY-green)

### 声明

以上数据仅用于个人学习,严禁商业转载,如需使用请联系官方授权!

LeetCode算法
链接:[https://leetcode-cn.com/problemset/all/](https://leetcode-cn.com/problemset/all/)

IT名企算法与数据结构题目最优解
【程序员代码面试指南:IT名企算法与数据结构题目最优解】第二版 作者:左程云

### 关于作者

[GitHub: sunfusheng](https://github.com/sunfusheng)

[个人邮箱: [email protected]](https://mail.126.com/)

[个人博客: sunfusheng.com](http://sunfusheng.com/)

[简书主页](http://www.jianshu.com/users/88509e7e2ed1/latest_articles)

[新浪微博](http://weibo.com/u/3852192525)