- 《算法导论》和《算法4》
- 时间复杂度和空间复杂度权衡,时间复杂度的提升是以空间复杂度为代价的
- 仔细观察,LeetCode 上对每一次代码的提交的 执行时间 && 消耗内存
- 效率 = 算法效率 + 编程语言效率 + 计算机硬件效率
- 大O符号 (Big O notation),又称为渐进符号,是用于描述函数渐近行为的数学符号
- 计算机语言有两大特性:生产效率 && 运行效率
- C++ 运行效率比 Python 高;Python 生产效率比 C++ 高
- CQueue: 剑指 Offer 09. 用两个栈实现队列
- MinStack2: 剑指 Offer 30. 包含min函数的栈
- reversePrint: 剑指 Offer 06. 从尾到头打印链表
- reverseList2: 剑指 Offer 24. 反转链表
- copyRandomList: 剑指 Offer 35. 复杂链表的复制
- replaceSpace: 剑指 Offer 05. 替换空格
- reverseLeftWords: 剑指 Offer 58 - II. 左旋转字符串
- findRepeatNumber: 剑指 Offer 03. 数组中重复的数字
- searchNumber: 在排序数组中查找数字 I
- missingNumberOnly: 剑指 Offer 53 - II. 0~n-1中缺失的数字
- findNumberIn2DArray: 剑指 Offer 04. 二维数组中的查找
- minArray: 剑指 Offer 11. 旋转数组的最小数字
- firstUniqChar2: 剑指 Offer 50. 第一个只出现一次的字符
- levelOrder: 剑指 Offer 32 - I. 从上到下打印二叉树
- levelOrderRow: 剑指 Offer 32 - II. 从上到下打印二叉树 II
- levelOrderRowCol: 剑指 Offer 32 - III. 从上到下打印二叉树 III
- isSubStructure: 剑指 Offer 26. 树的子结构
- mirrorTree: 剑指 Offer 27. 二叉树的镜像
- isSymmetricTree: 剑指 Offer 28. 对称的二叉树
- fib: 剑指 Offer 10- I. 斐波那契数列
- numWays: 剑指 Offer 10- II. 青蛙跳台阶问题
- maxProfit2: 剑指 Offer 63. 股票的最大利润
- maxSubArray2: 剑指 Offer 42. 连续子数组的最大和
- maxValue: 剑指 Offer 47. 礼物的最大价值
- translateNum: 剑指 Offer 46. 把数字翻译成字符串
- lengthOfLongestSubstring2: 剑指 Offer 48. 最长不含重复字符的子字符串
- deleteNode2: 剑指 Offer 18. 删除链表的节点
- getKthFromEnd: 剑指 Offer 22. 链表中倒数第k个节点
- mergeTwoLists2: 剑指 Offer 25. 合并两个排序的链表
- getIntersectionNode2: 剑指 Offer 52. 两个链表的第一个公共节点
- exchange: 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- twoSum3: 剑指 Offer 57. 和为s的两个数字
- reverseWords: 剑指 Offer 58 - I. 翻转单词顺序
- existMatrix: 剑指 Offer 12. 矩阵中的路径
- movingCount: 剑指 Offer 13. 机器人的运动范围
- pathSum2: 剑指 Offer 34. 二叉树中和为某一值的路径
- treeToDoublyList: 剑指 Offer 36. 二叉搜索树与双向链表
- kthLargest: 剑指 Offer 54. 二叉搜索树的第k大节点
- minNumber: 剑指 Offer 45. 把数组排成最小的数
- isStraight: 剑指 Offer 61. 扑克牌中的顺子
- getLeastNumbers: 剑指 Offer 40. 最小的k个数
- medianFinder: 剑指 Offer 41. 数据流中的中位数
- maxDepthTree: 剑指 Offer 55 - I. 二叉树的深度
- isBalancedTree: 剑指 Offer 55 - II. 平衡二叉树
- sumNums: 剑指 Offer 64. 求1+2+…+n
- lowestCommonAncestor3: 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
- lowestCommonAncestor4: 剑指 Offer 68 - II. 二叉树的最近公共祖先
- buildTree3: 剑指 Offer 07. 重建二叉树
- myPow: 剑指 Offer 16. 数值的整数次方
- verifyPostorder: 剑指 Offer 33. 二叉搜索树的后序遍历序列
- addAlgorithm: 剑指 Offer 65. 不用加减乘除做加法
- singleNumbers: 剑指 Offer 56 - I. 数组中数字出现的次数
- singleNumberTwo: 剑指 Offer 56 - II. 数组中数字出现的次数 II
- majorityElementArray: 剑指 Offer 39. 数组中出现次数超过一半的数字
- constructArr: 剑指 Offer 66. 构建乘积数组
- cuttingRope: 剑指 Offer 14- I. 剪绳子
- findContinuousSequence: 剑指 Offer 57 - II. 和为s的连续正数序列
- lastRemaining: 剑指 Offer 62. 圆圈中最后剩下的数字
- spiralOrder: 剑指 Offer 29. 顺时针打印矩阵
- validateStackSequences: 剑指 Offer 31. 栈的压入、弹出序列
- isNumberStr: 剑指 Offer 20. 表示数值的字符串
- strToInt: 剑指 Offer 67. 把字符串转换成整数
- maxSlidingWindowNums: 剑指 Offer 59 - I. 滑动窗口的最大值
- MaxQueue: 剑指 Offer 59 - II. 队列的最大值
- serialize: 剑指 Offer 37. 序列化二叉树
- permutation: 剑指 Offer 38. 字符串的排列
- isMatchRegular: 剑指 Offer 19. 正则表达式匹配
- nthUglyNumber: 剑指 Offer 49. 丑数
- dicesProbability: 剑指 Offer 60. n个骰子的点数
[数组] https://leetcode-cn.com/tag/array/problemset/
- removeDuplicates: 26. 删除有序数组中的重复项
- removeElement: 27. 移除元素
- maxArea: 11. 盛最多水的容器
- threeSum: 15. 三数之和
- threeSumClosest: 16. 最接近的三数之和
- firstMissingPositive: 41. 缺失的第一个正数
- largestRectangleArea: 84. 柱状图中最大的矩形
- trap: 42. 接雨水
- maximalRectangle: 85. 最大矩形
[字符串] https://leetcode-cn.com/tag/string/problemset/
- romanToInt: 13. 罗马数字转整数
- longestCommonPrefix: 14. 最长公共前缀
- convert: 6. Z 字形变换
- myAtoi: 8. 字符串转换整数 (atoi)
- intToRoman: 12. 整数转罗马数字
- findSubstring: 30. 串联所有单词的子串
- longestValidParentheses: 32. 最长有效括号
- isMatchSimple: 44. 通配符匹配
- isNumber: 65. 有效数字
[贪心] https://leetcode-cn.com/tag/greedy/problemset/
- arrayPairSum: 561. 数组拆分 I
- lemonadeChange: 860. 柠檬水找零
- jump: 45. 跳跃游戏 II
- canJump: 55. 跳跃游戏
- canCompleteCircuit: 134. 加油站
- maxNumber: 321. 拼接最大数
- minPatches: 330. 按要求补齐数组
- splitArray: 410. 分割数组的最大值
- findMaximizedCapital: 502. IPO
[双指针] https://leetcode-cn.com/tag/two-pointers/problemset/
- isPalindromeCheck: 125. 验证回文串
- hasCycle: 141. 环形链表
- moveZeroes: 283. 移动零
- fourSum: 18. 四数之和
- nextPermutation: 31. 下一个排列
- maxSum: 1537. 最大得分
- smallestDistancePair: 719. 找出第 k 小的距离对
- countPairs: 1782. 统计点对的数目
- trapMIN: 面试题 17.21. 直方图的水量
[哈希表] https://leetcode-cn.com/tag/hash-table/problemset/
- wordPattern: 290. 单词规律
- firstUniqChar: 387. 字符串中的第一个唯一字符
- letterCombinations: 17. 电话号码的字母组合
- groupAnagrams: 49. 字母异位词分组
- setZeroes: 73. 矩阵置零
- countOfAtoms: 726. 原子的数量
- smallestRange: 632. 最小区间
- findNumOfValidWords: 1178. 猜字谜
- longestAwesome: 1542. 找出最长的超赞子字符串
[动态规划] https://leetcode-cn.com/tag/dynamic-programming/problemset/
- generate: 118. 杨辉三角
- minCostClimbingStairs: 746. 使用最小花费爬楼梯
- uniquePaths: 62. 不同路径
- minimumTotal: 120. 三角形最小路径和
- numTrees: 96. 不同的二叉搜索树
- isScramble: 87. 扰乱字符串
- numDistinct: 115. 不同的子序列
- maxPathSum: 124. 二叉树中的最大路径和
- longestIncreasingPath: 329. 矩阵中的最长递增路径
LeetCode 101: A LeetCode Grinding Guide (C++ Version)
- find_content_children:455. 分发饼干
- candy: 135. 分发糖果
- erase_overlap_intervals: 435. 无重叠区间
- canPlaceFlowers: 605. 种花问题
- findMinArrowShots: 452. 用最少数量的箭引爆气球
- partitionLabels: 763. 划分字母区间
- maxProfit: 122. 买卖股票的最佳时机 II
- reconstructQueue: 406. 根据身高重建队列
- checkPossibility: 665. 非递减数列
- twoSum2: 167. 两数之和 II - 输入有序数组
- merge: 88. 合并两个有序数组
- detectCycle: 142. 环形链表 II
- minWindow: 76. 最小覆盖子串
- judgeSquareSum: 633. 平方数之和
- validPalindrome: 680. 验证回文字符串 Ⅱ
- findLongestWord: 524. 通过删除字母匹配到字典里最长单词
- mySqrt: 69. x 的平方根
- searchRange: 34. 在排序数组中查找元素的第一个和最后一个位置
- search: 81. 搜索旋转排序数组 II
- findMin: 154. 寻找旋转排序数组中的最小值 II
- singleNonDuplicate: 540. 有序数组中的单一元素
- findMedianSortedArrays: 4. 寻找两个正序数组的中位数
- common_sort_algorithms: 快速排序;归并排序;插入排序;冒泡排序;选择排序
- findKthLargest: 215. 数组中的第K个最大元素
- topKFrequent: 347. 前 K 个高频元素
- frequencySort: 3451. 根据字符出现频率排序
- sortColors: 75. 颜色分类
- 深度优先搜索(depth-first seach, DFS) && 广度优先搜索(Breadth first search, BFS)
- maxAreaOfIsland: 695. 岛屿的最大面积
- findCircleNum: 547. 省份数量
- pacificAtlantic: 417. 太平洋大西洋水流问题
- permute: 46. 全排列
- combine: 77. 组合
- exist: 79. 单词搜索
- solveNQueens: 51. N 皇后
- shortestBridge: 934. 最短的桥
- findLadders: 126. 单词接龙 II
- solve: 130. 被围绕的区域
- binaryTreePaths: 257. 二叉树的所有路径
- permuteUnique: 47. 全排列 II
- combinationSum2: 40. 组合总和 II
- solveSudoku: 37. 解数独
- findMinHeightTrees: 310. 最小高度树
- climbStairs: 70. 爬楼梯
- rob: 198. 打家劫舍
- numberOfArithmeticSlices: 413. 等差数列划分
- minPathSum: 64. 最小路径和
- updateMatrix: 542. 01 矩阵
- maximalSquare: 221. 最大正方形
- numSquares: 279. 完全平方数
- numDecodings: 91. 解码方法
- wordBreak: 139. 单词拆分
- lengthOfLIS: 300. 最长递增子序列
- longestCommonSubsequence: 1143. 最长公共子序列
- canPartition: 416. 分割等和子集
- findMaxForm: 474. 一和零
- coinChange: 322. 零钱兑换
- minDistance: 72. 编辑距离
- minSteps: 650. 只有两个键的键盘
- isMatch: 10. 正则表达式匹配
- maxProfitChance: 121. 买卖股票的最佳时机
- maxProfitChance2: 188. 买卖股票的最佳时机 IV
- maxProfitChanceCooldown: 309. 最佳买卖股票时机含冷冻期
- rob2: 213. 打家劫舍 II
- maxSubArray: 53. 最大子序和
- integerBreak: 343. 整数拆分
- minDistanceDelete: 583. 两个字符串的删除操作
- findLongestChain: 646. 最长数对链
- wiggleMaxLength: 376. 摆动序列
- findTargetSumWays: 494. 目标和
- maxProfitFree: 714. 买卖股票的最佳时机含手续费
- diffWaysToCompute: 241. 为运算表达式设计优先级
- beautifulArray: 932. 漂亮数组
- maxCoins: 312. 戳气球
- countPrimes: 204. 计数质数
- convertToBase7: 504. 七进制数
- trailingZeroes: 172. 阶乘后的零
- addStrings: 415. 字符串相加
- isPowerOfThree: 326. 3的幂
- shuffleReset: 384. 打乱数组
- pickIndex: 528. 按权重随机选择
- getRandom: 382. 链表随机节点
- convertToTitle: 168. Excel表列名称
- addBinary: 67. 二进制求和
- productExceptSelf: 238. 除自身以外数组的乘积
- minMoves2: 462. 最少移动次数使数组元素相等 II
- majorityElement: 169. 多数元素
- isHappy: 202. 快乐数
- hammingDistance: 461. 汉明距离
- reverseBits: 190. 颠倒二进制位
- singleNumber: 136. 只出现一次的数字
- isPowerOfFour: 342. 4的幂
- maxProduct: 318. 最大单词长度乘积
- countBits: 338. 比特位计数
- missingNumber: 268. 丢失的数字
- hasAlternatingBits: 693. 交替位二进制数
- findComplement: 476. 数字的补数
- singleNumber3: 260. 只出现一次的数字 III
- findDisappearedNumbers: 448. 找到所有数组中消失的数字
- rotateImage: 48. 旋转图像
- searchMatrix: 240. 搜索二维矩阵 II
- maxChunksToSorted: 769. 最多能完成排序的块
- MyQueue: 232. 用栈实现队列
- MinStack : 155. 最小栈
- isValid : 20. 有效的括号
- dailyTemperatures : 739. 每日温度
- mergeKLists : 23. 合并K个升序链表
- getSkyline : 218. 天际线问题
- maxSlidingWindow : 239. 滑动窗口最大值
- longestConsecutive : 128. 最长连续序列
- maxPoints : 149. 直线上最多的点数
- findItinerary : 332. 重新安排行程
- NumArray : 303. 区域和检索 - 数组不可变
- NumMatrix : 304. 二维区域和检索 - 矩阵不可变
- subarraySum : 560. 和为K的子数组
- matrixReshape : 566. 重塑矩阵
- MyStack : 225. 用队列实现栈
- nextGreaterElements : 503. 下一个更大元素 II
- containsDuplicate : 217. 存在重复元素
- findShortestSubArray : 697. 数组的度
- findLHS : 594. 最长和谐子序列
- findDuplicate : 287. 寻找重复数
- nthSuperUglyNumber : 313. 超级丑数
- advantageCount : 870. 优势洗牌
- NumArray2 : 307. 区域和检索 - 数组可修改
- isAnagram : 242. 有效的字母异位词
- isIsomorphic : 205. 同构字符串
- countSubstrings : 647. 回文子串
- countBinarySubstrings : 696. 计数二进制子串
- calculate : 227. 基本计算器 II
- strStr : 28. 实现 strStr()
- longestPalindrome : 409. 最长回文串
- lengthOfLongestSubstring : 3. 无重复字符的最长子串
- longestSubPalindrome : 5. 最长回文子串
- reverseList : 206. 反转链表
- mergeTwoLists : 21. 合并两个有序链表
- swapPairs : 24. 两两交换链表中的节点
- getIntersectionNode : 160. 相交链表
- isPalindrome : 234. 回文链表
- deleteDuplicates : 83. 删除排序链表中的重复元素
- oddEvenList : 328. 奇偶链表
- removeNthFromEnd : 19. 删除链表的倒数第 N 个结点
- sortList : 148. 排序链表
- maxDepth : 104. 二叉树的最大深度
- isBalanced : 110. 平衡二叉树
- diameterOfBinaryTree : 543. 二叉树的直径
- pathSum : 437. 路径总和 III
- isSymmetric : 101. 对称二叉树
- delNodes : 1110. 删点成林
- averageOfLevels : 637. 二叉树的层平均值
- buildTree : 105. 从前序与中序遍历序列构造二叉树
- preorderTraversal : 144. 二叉树的前序遍历
- recoverTree : 99. 恢复二叉搜索树
- trimBST : 669. 修剪二叉搜索树
- Trie : 208. 实现 Trie (前缀树)
- invertTree : 226. 翻转二叉树
- mergeTrees : 617. 合并二叉树
- isSubtree : 572. 另一棵树的子树
- sumOfLeftLeaves : 404. 左叶子之和
- findBottomLeftValue : 513. 找树左下角的值
- convertBST : 538. 把二叉搜索树转换为累加树
- lowestCommonAncestor : 235. 二叉搜索树的最近公共祖先
- getMinimumDifference : 530. 二叉搜索树的最小绝对差
- constructFromPrePost : 889. 根据前序和后序遍历构造二叉树
- buildTree2 : 106. 从中序与后序遍历序列构造二叉树
- inorderTraversal : 94. 二叉树的中序遍历
- postorderTraversal : 145. 二叉树的后序遍历
- lowestCommonAncestor2 : 236. 二叉树的最近公共祖先
- sortedListToBST : 109. 有序链表转换二叉搜索树
- increasingBST : 897. 递增顺序搜索树
- findTarget2 : 653. 两数之和 IV - 输入 BST
- deleteNode : 450. 删除二叉搜索树中的节点
- isBipartite : 785. 判断二分图
- findOrder : 210. 课程表 II
- reachableNodes : 882. 细分图中的可到达结点
- findRedundantConnection : 684. 冗余连接
- LRUCache : 146. LRU 缓存机制
- RandomizedSet : 380. O(1) 时间插入、删除和获取随机元素
- AllOne : 432. 全 O(1) 的数据结构
- AllOne : 432. 全 O(1) 的数据结构
-
命名一定有一套规范,尽量与普遍的规范一致
-
算法或者数据结构的编码实现
- 首先要弄懂算法或者数据结构的基本原理
- 然后针对使用的编程语言进行思考
- 最后动手开始编码
- 变量名,全部小写,尽量英文单词,做到见名知意,单词之间使用下划线分隔
- 函数名,首字母大写,尽量英文单词,单词之间使用下划线分隔,小驼峰命名法
- 类名,首字母大写,尽量英文单词,单词之间不需要使用下划线分隔,大驼峰命名法
- 文件名,全部小写,尽量英文单词,做到见名知意,单词之间使用下划线分隔
- 在此中可能使用一些常见的算法的缩写以及约定俗成的写法, 例如,梯度下降算法 GD,不需要的变量 _
——云主宰苍穹
——Steve Jobs
- Mail:2694048168@qq.com
- Weibo:云主宰苍穹
- GitHub: https://github.com/2694048168/
- Gitee:https://gitee.com/weili_yzzcq/