diff --git a/Cargo.toml b/Cargo.toml index 48dc63af..dd4342f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,12 @@ git2 = "0.13.15" reqwest = { version = "0.10", features = ["blocking", "json"] } serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } +clap = "3.0.0-beta.2" +tera = "1.12.1" +lazy_static = "1.4.0" +regex = "1" + [[bin]] name ="leetcode" -path ="src/main.rs" +path = "src/main.rs" diff --git a/README.md b/README.md index cd3d92f0..1cc941f1 100644 --- a/README.md +++ b/README.md @@ -1,743 +1,255 @@ # leetcode -当前已刷:246 +当前已刷:247 ### 题目 -- 1:两数之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/two-sum.rs) - - [leetcode](https://leetcode-cn.com/problems/two-sum/) -- 2:两数相加 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/add-two-numbers.rs) - - [leetcode](https://leetcode-cn.com/problems/add-two-numbers/) -- 3:无重复字符的最长子串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/longest-substring-without-repeating-characters.rs) - - [leetcode](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) -- 4:寻找两个正序数组的中位数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/median-of-two-sorted-arrays.rs) - - [leetcode](https://leetcode-cn.com/problems/median-of-two-sorted-arrays/) -- 6:Z 字形变换 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/zigzag-conversion.rs) - - [leetcode](https://leetcode-cn.com/problems/zigzag-conversion/) -- 7:整数反转 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reverse-integer.rs) - - [leetcode](https://leetcode-cn.com/problems/reverse-integer/) -- 8:字符串转换整数 (atoi) - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/string-to-integer-atoi.rs) - - [leetcode](https://leetcode-cn.com/problems/string-to-integer-atoi/) -- 9:回文数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/palindrome-number.rs) - - [leetcode](https://leetcode-cn.com/problems/palindrome-number/) -- 11:盛最多水的容器 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/container-with-most-water.rs) - - [leetcode](https://leetcode-cn.com/problems/container-with-most-water/) -- 12:整数转罗马数字 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/integer-to-roman.rs) - - [leetcode](https://leetcode-cn.com/problems/integer-to-roman/) -- 13:罗马数字转整数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/roman-to-integer.rs) - - [leetcode](https://leetcode-cn.com/problems/roman-to-integer/) -- 14:最长公共前缀 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/longest-common-prefix.rs) - - [leetcode](https://leetcode-cn.com/problems/longest-common-prefix/) -- 15:三数之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/3sum.rs) - - [leetcode](https://leetcode-cn.com/problems/3sum/) -- 16:最接近的三数之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/3sum-closest.rs) - - [leetcode](https://leetcode-cn.com/problems/3sum-closest/) -- 17:电话号码的字母组合 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/letter-combinations-of-a-phone-number.rs) - - [leetcode](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/) -- 18:四数之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/4sum.rs) - - [leetcode](https://leetcode-cn.com/problems/4sum/) -- 19:删除链表的倒数第 N 个结点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-nth-node-from-end-of-list.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/) -- 20:有效的括号 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/valid-parentheses.rs) - - [leetcode](https://leetcode-cn.com/problems/valid-parentheses/) -- 21:合并两个有序链表 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/merge-two-sorted-lists.rs) - - [leetcode](https://leetcode-cn.com/problems/merge-two-sorted-lists/) -- 23:合并K个升序链表 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/merge-k-sorted-lists.rs) - - [leetcode](https://leetcode-cn.com/problems/merge-k-sorted-lists/) -- 24:两两交换链表中的节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/swap-nodes-in-pairs.rs) - - [leetcode](https://leetcode-cn.com/problems/swap-nodes-in-pairs/) -- 25:K 个一组翻转链表 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reverse-nodes-in-k-group.rs) - - [leetcode](https://leetcode-cn.com/problems/reverse-nodes-in-k-group/) -- 26:删除有序数组中的重复项 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-duplicates-from-sorted-array.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/) -- 27:移除元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-element.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-element/) -- 28:实现 strStr() - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/implement-strstr.rs) - - [leetcode](https://leetcode-cn.com/problems/implement-strstr/) -- 31:下一个排列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/next-permutation.rs) - - [leetcode](https://leetcode-cn.com/problems/next-permutation/) -- 33:搜索旋转排序数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/search-in-rotated-sorted-array.rs) - - [leetcode](https://leetcode-cn.com/problems/search-in-rotated-sorted-array/) -- 34:在排序数组中查找元素的第一个和最后一个位置 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-first-and-last-position-of-element-in-sorted-array.rs) - - [leetcode](https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/) -- 35:搜索插入位置 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/search-insert-position.rs) - - [leetcode](https://leetcode-cn.com/problems/search-insert-position/) -- 36:有效的数独 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/valid-sudoku.rs) - - [leetcode](https://leetcode-cn.com/problems/valid-sudoku/) -- 38:外观数列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-and-say.rs) - - [leetcode](https://leetcode-cn.com/problems/count-and-say/) -- 39:组合总和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/combination-sum.rs) - - [leetcode](https://leetcode-cn.com/problems/combination-sum/) -- 41:缺失的第一个正数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/first-missing-positive.rs) - - [leetcode](https://leetcode-cn.com/problems/first-missing-positive/) -- 43:字符串相乘 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/multiply-strings.rs) - - [leetcode](https://leetcode-cn.com/problems/multiply-strings/) -- 45:跳跃游戏 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/jump-game-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/jump-game-ii/) -- 46:全排列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/permutations.rs) - - [leetcode](https://leetcode-cn.com/problems/permutations/) -- 48:旋转图像 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/rotate-image.rs) - - [leetcode](https://leetcode-cn.com/problems/rotate-image/) -- 49:字母异位词分组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/group-anagrams.rs) - - [leetcode](https://leetcode-cn.com/problems/group-anagrams/) -- 50:Pow(x, n) - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/powx-n.rs) - - [leetcode](https://leetcode-cn.com/problems/powx-n/) -- 51:N 皇后 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/n-queens.rs) - - [leetcode](https://leetcode-cn.com/problems/n-queens/) -- 52:N皇后 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/n-queens-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/n-queens-ii/) -- 53:最大子序和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-subarray.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-subarray/) -- 55:跳跃游戏 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/jump-game.rs) - - [leetcode](https://leetcode-cn.com/problems/jump-game/) -- 56:合并区间 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/merge-intervals.rs) - - [leetcode](https://leetcode-cn.com/problems/merge-intervals/) -- 57:插入区间 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/insert-interval.rs) - - [leetcode](https://leetcode-cn.com/problems/insert-interval/) -- 58:最后一个单词的长度 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/length-of-last-word.rs) - - [leetcode](https://leetcode-cn.com/problems/length-of-last-word/) -- 62:不同路径 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/unique-paths.rs) - - [leetcode](https://leetcode-cn.com/problems/unique-paths/) -- 63:不同路径 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/unique-paths-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/unique-paths-ii/) -- 64:最小路径和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/minimum-path-sum.rs) - - [leetcode](https://leetcode-cn.com/problems/minimum-path-sum/) -- 66:加一 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/plus-one.rs) - - [leetcode](https://leetcode-cn.com/problems/plus-one/) -- 67:二进制求和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/add-binary.rs) - - [leetcode](https://leetcode-cn.com/problems/add-binary/) -- 69:x 的平方根 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/sqrtx.rs) - - [leetcode](https://leetcode-cn.com/problems/sqrtx/) -- 70:爬楼梯 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/climbing-stairs.rs) - - [leetcode](https://leetcode-cn.com/problems/climbing-stairs/) -- 71:简化路径 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/simplify-path.rs) - - [leetcode](https://leetcode-cn.com/problems/simplify-path/) -- 73:矩阵置零 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/set-matrix-zeroes.rs) - - [leetcode](https://leetcode-cn.com/problems/set-matrix-zeroes/) -- 74:搜索二维矩阵 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/search-a-2d-matrix.rs) - - [leetcode](https://leetcode-cn.com/problems/search-a-2d-matrix/) -- 75:颜色分类 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/sort-colors.rs) - - [leetcode](https://leetcode-cn.com/problems/sort-colors/) -- 77:组合 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/combinations.rs) - - [leetcode](https://leetcode-cn.com/problems/combinations/) -- 78:子集 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/subsets.rs) - - [leetcode](https://leetcode-cn.com/problems/subsets/) -- 79:单词搜索 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/word-search.rs) - - [leetcode](https://leetcode-cn.com/problems/word-search/) -- 80:删除有序数组中的重复项 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-duplicates-from-sorted-array-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/) -- 81:搜索旋转排序数组 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/search-in-rotated-sorted-array-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/) -- 82:删除排序链表中的重复元素 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-duplicates-from-sorted-list-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/) -- 83:删除排序链表中的重复元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-duplicates-from-sorted-list.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/) -- 88:合并两个有序数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/merge-sorted-array.rs) - - [leetcode](https://leetcode-cn.com/problems/merge-sorted-array/) -- 89:格雷编码 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/gray-code.rs) - - [leetcode](https://leetcode-cn.com/problems/gray-code/) -- 91:解码方法 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/decode-ways.rs) - - [leetcode](https://leetcode-cn.com/problems/decode-ways/) -- 93:复原 IP 地址 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/restore-ip-addresses.rs) - - [leetcode](https://leetcode-cn.com/problems/restore-ip-addresses/) -- 94:二叉树的中序遍历 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-inorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/) -- 95:不同的二叉搜索树 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/unique-binary-search-trees-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/unique-binary-search-trees-ii/) -- 96:不同的二叉搜索树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/unique-binary-search-trees.rs) - - [leetcode](https://leetcode-cn.com/problems/unique-binary-search-trees/) -- 98:验证二叉搜索树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/validate-binary-search-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/validate-binary-search-tree/) -- 100:相同的树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/same-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/same-tree/) -- 101:对称二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/symmetric-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/symmetric-tree/) -- 102:二叉树的层序遍历 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-level-order-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-level-order-traversal/) -- 103:二叉树的锯齿形层序遍历 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-zigzag-level-order-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/) -- 104:二叉树的最大深度 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-depth-of-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/) -- 105:从前序与中序遍历序列构造二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/construct-binary-tree-from-preorder-and-inorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) -- 106:从中序与后序遍历序列构造二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/construct-binary-tree-from-inorder-and-postorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) -- 107:二叉树的层序遍历 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-level-order-traversal-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/) -- 108:将有序数组转换为二叉搜索树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/convert-sorted-array-to-binary-search-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/) -- 110:平衡二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/balanced-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/balanced-binary-tree/) -- 111:二叉树的最小深度 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/minimum-depth-of-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/) -- 112:路径总和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/path-sum.rs) - - [leetcode](https://leetcode-cn.com/problems/path-sum/) -- 113:路径总和 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/path-sum-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/path-sum-ii/) -- 118:杨辉三角 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/pascals-triangle.rs) - - [leetcode](https://leetcode-cn.com/problems/pascals-triangle/) -- 119:杨辉三角 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/pascals-triangle-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/pascals-triangle-ii/) -- 120:三角形最小路径和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/triangle.rs) - - [leetcode](https://leetcode-cn.com/problems/triangle/) -- 121:买卖股票的最佳时机 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/best-time-to-buy-and-sell-stock.rs) - - [leetcode](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/) -- 122:买卖股票的最佳时机 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/best-time-to-buy-and-sell-stock-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/) -- 125:验证回文串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/valid-palindrome.rs) - - [leetcode](https://leetcode-cn.com/problems/valid-palindrome/) -- 129:求根节点到叶节点数字之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/sum-root-to-leaf-numbers.rs) - - [leetcode](https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/) -- 136:只出现一次的数字 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/single-number.rs) - - [leetcode](https://leetcode-cn.com/problems/single-number/) -- 137:只出现一次的数字 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/single-number-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/single-number-ii/) -- 144:二叉树的前序遍历 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-preorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/) -- 145:二叉树的后序遍历 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-postorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/) -- 150:逆波兰表达式求值 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/evaluate-reverse-polish-notation.rs) - - [leetcode](https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/) -- 151:翻转字符串里的单词 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reverse-words-in-a-string.rs) - - [leetcode](https://leetcode-cn.com/problems/reverse-words-in-a-string/) -- 152:乘积最大子数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-product-subarray.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-product-subarray/) -- 153:寻找旋转排序数组中的最小值 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-minimum-in-rotated-sorted-array.rs) - - [leetcode](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/) -- 155:最小栈 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/min-stack.rs) - - [leetcode](https://leetcode-cn.com/problems/min-stack/) -- 162:寻找峰值 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-peak-element.rs) - - [leetcode](https://leetcode-cn.com/problems/find-peak-element/) -- 165:比较版本号 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/compare-version-numbers.rs) - - [leetcode](https://leetcode-cn.com/problems/compare-version-numbers/) -- 166:分数到小数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/fraction-to-recurring-decimal.rs) - - [leetcode](https://leetcode-cn.com/problems/fraction-to-recurring-decimal/) -- 167:两数之和 II - 输入有序数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/two-sum-ii-input-array-is-sorted.rs) - - [leetcode](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/) -- 168:Excel表列名称 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/excel-sheet-column-title.rs) - - [leetcode](https://leetcode-cn.com/problems/excel-sheet-column-title/) -- 169:多数元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/majority-element.rs) - - [leetcode](https://leetcode-cn.com/problems/majority-element/) -- 171:Excel表列序号 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/excel-sheet-column-number.rs) - - [leetcode](https://leetcode-cn.com/problems/excel-sheet-column-number/) -- 172:阶乘后的零 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/factorial-trailing-zeroes.rs) - - [leetcode](https://leetcode-cn.com/problems/factorial-trailing-zeroes/) -- 173:二叉搜索树迭代器 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-search-tree-iterator.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-search-tree-iterator/) -- 187:重复的DNA序列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/repeated-dna-sequences.rs) - - [leetcode](https://leetcode-cn.com/problems/repeated-dna-sequences/) -- 190:颠倒二进制位 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reverse-bits.rs) - - [leetcode](https://leetcode-cn.com/problems/reverse-bits/) -- 191:位1的个数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/number-of-1-bits.rs) - - [leetcode](https://leetcode-cn.com/problems/number-of-1-bits/) -- 198:打家劫舍 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/house-robber.rs) - - [leetcode](https://leetcode-cn.com/problems/house-robber/) -- 199:二叉树的右视图 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-right-side-view.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-right-side-view/) -- 200:岛屿数量 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/number-of-islands.rs) - - [leetcode](https://leetcode-cn.com/problems/number-of-islands/) -- 201:数字范围按位与 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/bitwise-and-of-numbers-range.rs) - - [leetcode](https://leetcode-cn.com/problems/bitwise-and-of-numbers-range/) -- 202:快乐数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/happy-number.rs) - - [leetcode](https://leetcode-cn.com/problems/happy-number/) -- 203:移除链表元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-linked-list-elements.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-linked-list-elements/) -- 204:计数质数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-primes.rs) - - [leetcode](https://leetcode-cn.com/problems/count-primes/) -- 205:同构字符串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/isomorphic-strings.rs) - - [leetcode](https://leetcode-cn.com/problems/isomorphic-strings/) -- 206:反转链表 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reverse-linked-list.rs) - - [leetcode](https://leetcode-cn.com/problems/reverse-linked-list/) -- 208:实现 Trie (前缀树) - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/implement-trie-prefix-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/implement-trie-prefix-tree/) -- 211:添加与搜索单词 - 数据结构设计 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/design-add-and-search-words-data-structure.rs) - - [leetcode](https://leetcode-cn.com/problems/design-add-and-search-words-data-structure/) -- 213:打家劫舍 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/house-robber-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/house-robber-ii/) -- 215:数组中的第K个最大元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/kth-largest-element-in-an-array.rs) - - [leetcode](https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) -- 216:组合总和 III - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/combination-sum-iii.rs) - - [leetcode](https://leetcode-cn.com/problems/combination-sum-iii/) -- 217:存在重复元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/contains-duplicate.rs) - - [leetcode](https://leetcode-cn.com/problems/contains-duplicate/) -- 219:存在重复元素 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/contains-duplicate-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/contains-duplicate-ii/) -- 222:完全二叉树的节点个数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-complete-tree-nodes.rs) - - [leetcode](https://leetcode-cn.com/problems/count-complete-tree-nodes/) -- 223:矩形面积 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/rectangle-area.rs) - - [leetcode](https://leetcode-cn.com/problems/rectangle-area/) -- 225:用队列实现栈 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/implement-stack-using-queues.rs) - - [leetcode](https://leetcode-cn.com/problems/implement-stack-using-queues/) -- 226:翻转二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/invert-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/invert-binary-tree/) -- 228:汇总区间 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/summary-ranges.rs) - - [leetcode](https://leetcode-cn.com/problems/summary-ranges/) -- 229:求众数 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/majority-element-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/majority-element-ii/) -- 230:二叉搜索树中第K小的元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/kth-smallest-element-in-a-bst.rs) - - [leetcode](https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/) -- 231:2 的幂 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/power-of-two.rs) - - [leetcode](https://leetcode-cn.com/problems/power-of-two/) -- 232:用栈实现队列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/implement-queue-using-stacks.rs) - - [leetcode](https://leetcode-cn.com/problems/implement-queue-using-stacks/) -- 234:回文链表 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/palindrome-linked-list.rs) - - [leetcode](https://leetcode-cn.com/problems/palindrome-linked-list/) -- 235:二叉搜索树的最近公共祖先 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/lowest-common-ancestor-of-a-binary-search-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) -- 238:除自身以外数组的乘积 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/product-of-array-except-self.rs) - - [leetcode](https://leetcode-cn.com/problems/product-of-array-except-self/) -- 242:有效的字母异位词 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/valid-anagram.rs) - - [leetcode](https://leetcode-cn.com/problems/valid-anagram/) -- 257:二叉树的所有路径 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/binary-tree-paths.rs) - - [leetcode](https://leetcode-cn.com/problems/binary-tree-paths/) -- 258:各位相加 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/add-digits.rs) - - [leetcode](https://leetcode-cn.com/problems/add-digits/) -- 263:丑数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/ugly-number.rs) - - [leetcode](https://leetcode-cn.com/problems/ugly-number/) -- 268:丢失的数字 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/missing-number.rs) - - [leetcode](https://leetcode-cn.com/problems/missing-number/) -- 274:H 指数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/h-index.rs) - - [leetcode](https://leetcode-cn.com/problems/h-index/) -- 278:第一个错误的版本 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/first-bad-version.rs) - - [leetcode](https://leetcode-cn.com/problems/first-bad-version/) -- 279:完全平方数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/perfect-squares.rs) - - [leetcode](https://leetcode-cn.com/problems/perfect-squares/) -- 290:单词规律 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/word-pattern.rs) - - [leetcode](https://leetcode-cn.com/problems/word-pattern/) -- 303:区域和检索 - 数组不可变 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/range-sum-query-immutable.rs) - - [leetcode](https://leetcode-cn.com/problems/range-sum-query-immutable/) -- 318:最大单词长度乘积 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-product-of-word-lengths.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-product-of-word-lengths/) -- 319:灯泡开关 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/bulb-switcher.rs) - - [leetcode](https://leetcode-cn.com/problems/bulb-switcher/) -- 326:3的幂 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/power-of-three.rs) - - [leetcode](https://leetcode-cn.com/problems/power-of-three/) -- 349:两个数组的交集 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/intersection-of-two-arrays.rs) - - [leetcode](https://leetcode-cn.com/problems/intersection-of-two-arrays/) -- 357:计算各个位数不同的数字个数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-numbers-with-unique-digits.rs) - - [leetcode](https://leetcode-cn.com/problems/count-numbers-with-unique-digits/) -- 367:有效的完全平方数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/valid-perfect-square.rs) - - [leetcode](https://leetcode-cn.com/problems/valid-perfect-square/) -- 371:两整数之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/sum-of-two-integers.rs) - - [leetcode](https://leetcode-cn.com/problems/sum-of-two-integers/) -- 374:猜数字大小 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/guess-number-higher-or-lower.rs) - - [leetcode](https://leetcode-cn.com/problems/guess-number-higher-or-lower/) -- 387:字符串中的第一个唯一字符 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/first-unique-character-in-a-string.rs) - - [leetcode](https://leetcode-cn.com/problems/first-unique-character-in-a-string/) -- 404:左叶子之和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/sum-of-left-leaves.rs) - - [leetcode](https://leetcode-cn.com/problems/sum-of-left-leaves/) -- 419:甲板上的战舰 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/battleships-in-a-board.rs) - - [leetcode](https://leetcode-cn.com/problems/battleships-in-a-board/) -- 423:从英文中重建数字 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reconstruct-original-digits-from-english.rs) - - [leetcode](https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/) -- 434:字符串中的单词数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/number-of-segments-in-a-string.rs) - - [leetcode](https://leetcode-cn.com/problems/number-of-segments-in-a-string/) -- 476:数字的补数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/number-complement.rs) - - [leetcode](https://leetcode-cn.com/problems/number-complement/) -- 481:神奇字符串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/magical-string.rs) - - [leetcode](https://leetcode-cn.com/problems/magical-string/) -- 500:键盘行 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/keyboard-row.rs) - - [leetcode](https://leetcode-cn.com/problems/keyboard-row/) -- 520:检测大写字母 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/detect-capital.rs) - - [leetcode](https://leetcode-cn.com/problems/detect-capital/) -- 528:交换链表中的节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/swapping-nodes-in-a-linked-list.rs) - - [leetcode](https://leetcode-cn.com/problems/swapping-nodes-in-a-linked-list/) -- 551:学生出勤记录 I - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/student-attendance-record-i.rs) - - [leetcode](https://leetcode-cn.com/problems/student-attendance-record-i/) -- 560:和为K的子数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/subarray-sum-equals-k.rs) - - [leetcode](https://leetcode-cn.com/problems/subarray-sum-equals-k/) -- 565:数组嵌套 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/array-nesting.rs) - - [leetcode](https://leetcode-cn.com/problems/array-nesting/) -- 594:最长和谐子序列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/longest-harmonious-subsequence.rs) - - [leetcode](https://leetcode-cn.com/problems/longest-harmonious-subsequence/) -- 617:合并二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/merge-two-binary-trees.rs) - - [leetcode](https://leetcode-cn.com/problems/merge-two-binary-trees/) -- 649:Dota2 参议院 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/dota2-senate.rs) - - [leetcode](https://leetcode-cn.com/problems/dota2-senate/) -- 650:只有两个键的键盘 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/2-keys-keyboard.rs) - - [leetcode](https://leetcode-cn.com/problems/2-keys-keyboard/) -- 653:两数之和 IV - 输入 BST - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/two-sum-iv-input-is-a-bst.rs) - - [leetcode](https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/) -- 658:找到 K 个最接近的元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-k-closest-elements.rs) - - [leetcode](https://leetcode-cn.com/problems/find-k-closest-elements/) -- 674:最长连续递增序列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/longest-continuous-increasing-subsequence.rs) - - [leetcode](https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/) -- 800:字母大小写全排列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/letter-case-permutation.rs) - - [leetcode](https://leetcode-cn.com/problems/letter-case-permutation/) -- 825:保持城市天际线 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/max-increase-to-keep-city-skyline.rs) - - [leetcode](https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/) -- 829:子域名访问计数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/subdomain-visit-count.rs) - - [leetcode](https://leetcode-cn.com/problems/subdomain-visit-count/) -- 857:较大分组的位置 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/positions-of-large-groups.rs) - - [leetcode](https://leetcode-cn.com/problems/positions-of-large-groups/) -- 868:推多米诺 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/push-dominoes.rs) - - [leetcode](https://leetcode-cn.com/problems/push-dominoes/) -- 917:救生艇 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/boats-to-save-people.rs) - - [leetcode](https://leetcode-cn.com/problems/boats-to-save-people/) -- 921:螺旋矩阵 III - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/spiral-matrix-iii.rs) - - [leetcode](https://leetcode-cn.com/problems/spiral-matrix-iii/) -- 924:公平的糖果棒交换 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/fair-candy-swap.rs) - - [leetcode](https://leetcode-cn.com/problems/fair-candy-swap/) -- 925:根据前序和后序遍历构造二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/construct-binary-tree-from-preorder-and-postorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) -- 932:单调数列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/monotonic-array.rs) - - [leetcode](https://leetcode-cn.com/problems/monotonic-array/) -- 979:增减字符串匹配 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/di-string-match.rs) - - [leetcode](https://leetcode-cn.com/problems/di-string-match/) -- 981:删列造序 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/delete-columns-to-make-sorted.rs) - - [leetcode](https://leetcode-cn.com/problems/delete-columns-to-make-sorted/) -- 982:使数组唯一的最小增量 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/minimum-increment-to-make-array-unique.rs) - - [leetcode](https://leetcode-cn.com/problems/minimum-increment-to-make-array-unique/) -- 1002:最大宽度坡 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-width-ramp.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-width-ramp/) -- 1005:单值二叉树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/univalued-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/univalued-binary-tree/) -- 1007:连续差相同的数字 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/numbers-with-same-consecutive-differences.rs) - - [leetcode](https://leetcode-cn.com/problems/numbers-with-same-consecutive-differences/) -- 1046:最大连续1的个数 III - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/max-consecutive-ones-iii.rs) - - [leetcode](https://leetcode-cn.com/problems/max-consecutive-ones-iii/) -- 1050:前序遍历构造二叉搜索树 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/construct-binary-search-tree-from-preorder-traversal.rs) - - [leetcode](https://leetcode-cn.com/problems/construct-binary-search-tree-from-preorder-traversal/) -- 1054:十进制整数的反码 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/complement-of-base-10-integer.rs) - - [leetcode](https://leetcode-cn.com/problems/complement-of-base-10-integer/) -- 1072:链表中的下一个更大节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/next-greater-node-in-linked-list.rs) - - [leetcode](https://leetcode-cn.com/problems/next-greater-node-in-linked-list/) -- 1119:困于环中的机器人 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/robot-bounded-in-circle.rs) - - [leetcode](https://leetcode-cn.com/problems/robot-bounded-in-circle/) -- 1128:删除字符串中的所有相邻重复项 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-all-adjacent-duplicates-in-string.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/) -- 1157:根到叶路径上的不足节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/insufficient-nodes-in-root-to-leaf-paths.rs) - - [leetcode](https://leetcode-cn.com/problems/insufficient-nodes-in-root-to-leaf-paths/) -- 1210:删除某些元素后的数组均值 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/mean-of-array-after-removing-some-elements.rs) - - [leetcode](https://leetcode-cn.com/problems/mean-of-array-after-removing-some-elements/) -- 1238:字母板上的路径 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/alphabet-board-path.rs) - - [leetcode](https://leetcode-cn.com/problems/alphabet-board-path/) -- 1287:公交站间的距离 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/distance-between-bus-stops.rs) - - [leetcode](https://leetcode-cn.com/problems/distance-between-bus-stops/) -- 1320:删除字符串中的所有相邻重复项 II - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/remove-all-adjacent-duplicates-in-string-ii.rs) - - [leetcode](https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string-ii/) -- 1341:分割平衡字符串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/split-a-string-in-balanced-strings.rs) - - [leetcode](https://leetcode-cn.com/problems/split-a-string-in-balanced-strings/) -- 1362:飞机座位分配概率 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/airplane-seat-assignment-probability.rs) - - [leetcode](https://leetcode-cn.com/problems/airplane-seat-assignment-probability/) -- 1370:统计「优美子数组」 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-number-of-nice-subarrays.rs) - - [leetcode](https://leetcode-cn.com/problems/count-number-of-nice-subarrays/) -- 1371:移除无效的括号 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/minimum-remove-to-make-valid-parentheses.rs) - - [leetcode](https://leetcode-cn.com/problems/minimum-remove-to-make-valid-parentheses/) -- 1379:重构 2 行二进制矩阵 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/reconstruct-a-2-row-binary-matrix.rs) - - [leetcode](https://leetcode-cn.com/problems/reconstruct-a-2-row-binary-matrix/) -- 1387:在受污染的二叉树中查找元素 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-elements-in-a-contaminated-binary-tree.rs) - - [leetcode](https://leetcode-cn.com/problems/find-elements-in-a-contaminated-binary-tree/) -- 1411:二进制链表转整数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/convert-binary-number-in-a-linked-list-to-integer.rs) - - [leetcode](https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/) -- 1426:和为零的N个唯一整数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/find-n-unique-integers-sum-up-to-zero.rs) - - [leetcode](https://leetcode-cn.com/problems/find-n-unique-integers-sum-up-to-zero/) -- 1428:跳跃游戏 III - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/jump-game-iii.rs) - - [leetcode](https://leetcode-cn.com/problems/jump-game-iii/) -- 1434:解码字母到整数映射 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/decrypt-string-from-alphabet-to-integer-mapping.rs) - - [leetcode](https://leetcode-cn.com/problems/decrypt-string-from-alphabet-to-integer-mapping/) -- 1441:或运算的最小翻转次数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/minimum-flips-to-make-a-or-b-equal-to-c.rs) - - [leetcode](https://leetcode-cn.com/problems/minimum-flips-to-make-a-or-b-equal-to-c/) -- 1468:检查整数及其两倍数是否存在 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/check-if-n-and-its-double-exist.rs) - - [leetcode](https://leetcode-cn.com/problems/check-if-n-and-its-double-exist/) -- 1537:分割字符串的最大得分 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-score-after-splitting-a-string.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-score-after-splitting-a-string/) -- 1538:可获得的最大点数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-points-you-can-obtain-from-cards.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/) -- 1552:用栈操作构建数组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/build-an-array-with-stack-operations.rs) - - [leetcode](https://leetcode-cn.com/problems/build-an-array-with-stack-operations/) -- 1566:检查单词是否为句中其他单词的前缀 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence.rs) - - [leetcode](https://leetcode-cn.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/) -- 1567:定长子串中元音的最大数目 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-number-of-vowels-in-a-substring-of-given-length.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) -- 1603:一维数组的动态和 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/running-sum-of-1d-array.rs) - - [leetcode](https://leetcode-cn.com/problems/running-sum-of-1d-array/) -- 1604:不同整数的最少数目 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/least-number-of-unique-integers-after-k-removals.rs) - - [leetcode](https://leetcode-cn.com/problems/least-number-of-unique-integers-after-k-removals/) -- 1620:检查数组对是否可以被 k 整除 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/check-if-array-pairs-are-divisible-by-k.rs) - - [leetcode](https://leetcode-cn.com/problems/check-if-array-pairs-are-divisible-by-k/) -- 1642:换酒问题 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/water-bottles.rs) - - [leetcode](https://leetcode-cn.com/problems/water-bottles/) -- 1656:统计好三元组 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-good-triplets.rs) - - [leetcode](https://leetcode-cn.com/problems/count-good-triplets/) -- 1660:千位分隔数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/thousand-separator.rs) - - [leetcode](https://leetcode-cn.com/problems/thousand-separator/) -- 1666:整理字符串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/make-the-string-great.rs) - - [leetcode](https://leetcode-cn.com/problems/make-the-string-great/) -- 1791:最富有客户的资产总量 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/richest-customer-wealth.rs) - - [leetcode](https://leetcode-cn.com/problems/richest-customer-wealth/) -- 1797:设计 Goal 解析器 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/goal-parser-interpretation.rs) - - [leetcode](https://leetcode-cn.com/problems/goal-parser-interpretation/) -- 1806:比赛中的配对次数 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/count-of-matches-in-tournament.rs) - - [leetcode](https://leetcode-cn.com/problems/count-of-matches-in-tournament/) -- 1807:十-二进制数的最少数目 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/partitioning-into-minimum-number-of-deci-binary-numbers.rs) - - [leetcode](https://leetcode-cn.com/problems/partitioning-into-minimum-number-of-deci-binary-numbers/) -- 100273:用两个栈实现队列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) -- 100274:斐波那契数列 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/fei-bo-na-qi-shu-lie-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/) -- 100299:删除链表的节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/shan-chu-lian-biao-de-jie-dian-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/) -- 100316:第一个只出现一次的字符 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) -- 100325:把数字翻译成字符串 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) -- 100333:二叉搜索树的第k大节点 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) -- 100344:股票的最大利润 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/gu-piao-de-zui-da-li-run-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/) -- 100345:求1+2+…+n - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/qiu-12n-lcof.rs) - - [leetcode](https://leetcode-cn.com/problems/qiu-12n-lcof/) -- 100349:最大数值 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/maximum-lcci.rs) - - [leetcode](https://leetcode-cn.com/problems/maximum-lcci/) -- 100352:跳水板 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/diving-board-lcci.rs) - - [leetcode](https://leetcode-cn.com/problems/diving-board-lcci/) -- 100353:平分正方形 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/bisect-squares-lcci.rs) - - [leetcode](https://leetcode-cn.com/problems/bisect-squares-lcci/) -- 1000063:传递信息 - - [src](https://github.com/rustors/leetcode/blob/main/src/bin/chuan-di-xin-xi.rs) - - [leetcode](https://leetcode-cn.com/problems/chuan-di-xin-xi/) + +| 编号 | 题目 | 描述 | 代码 | +| ---- | ----- | ------------------------------------------------------------ | ----------------------------------------------------- | +|1 | 两数之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|2 | 两数相加 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|3 | 无重复字符的最长子串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|4 | 寻找两个正序数组的中位数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|6 | Z 字形变换 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|7 | 整数反转 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|8 | 字符串转换整数 (atoi) | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|9 | 回文数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|11 | 盛最多水的容器 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|12 | 整数转罗马数字 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|13 | 罗马数字转整数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|14 | 最长公共前缀 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|15 | 三数之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|16 | 最接近的三数之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|17 | 电话号码的字母组合 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|18 | 四数之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|19 | 删除链表的倒数第 N 个结点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|20 | 有效的括号 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|21 | 合并两个有序链表 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|23 | 合并K个升序链表 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|24 | 两两交换链表中的节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|25 | K 个一组翻转链表 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|26 | 删除有序数组中的重复项 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|27 | 移除元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|28 | 实现 strStr() | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|31 | 下一个排列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|33 | 搜索旋转排序数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|34 | 在排序数组中查找元素的第一个和最后一个位置 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|35 | 搜索插入位置 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|36 | 有效的数独 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|38 | 外观数列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|39 | 组合总和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|41 | 缺失的第一个正数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|43 | 字符串相乘 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|45 | 跳跃游戏 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|46 | 全排列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|48 | 旋转图像 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|49 | 字母异位词分组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|50 | Pow(x, n) | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|51 | N 皇后 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|52 | N皇后 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|53 | 最大子序和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|55 | 跳跃游戏 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|56 | 合并区间 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|57 | 插入区间 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|58 | 最后一个单词的长度 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|62 | 不同路径 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|63 | 不同路径 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|64 | 最小路径和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|66 | 加一 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|67 | 二进制求和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|69 | x 的平方根 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|70 | 爬楼梯 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|71 | 简化路径 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|73 | 矩阵置零 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|74 | 搜索二维矩阵 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|75 | 颜色分类 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|77 | 组合 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|78 | 子集 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|79 | 单词搜索 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|80 | 删除有序数组中的重复项 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|81 | 搜索旋转排序数组 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|82 | 删除排序链表中的重复元素 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|83 | 删除排序链表中的重复元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|88 | 合并两个有序数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|89 | 格雷编码 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|91 | 解码方法 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|93 | 复原 IP 地址 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|94 | 二叉树的中序遍历 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|95 | 不同的二叉搜索树 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|96 | 不同的二叉搜索树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|98 | 验证二叉搜索树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100 | 相同的树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|101 | 对称二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|102 | 二叉树的层序遍历 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|103 | 二叉树的锯齿形层序遍历 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|104 | 二叉树的最大深度 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|105 | 从前序与中序遍历序列构造二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|106 | 从中序与后序遍历序列构造二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|107 | 二叉树的层序遍历 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|108 | 将有序数组转换为二叉搜索树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|110 | 平衡二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|111 | 二叉树的最小深度 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|112 | 路径总和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|113 | 路径总和 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|118 | 杨辉三角 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|119 | 杨辉三角 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|120 | 三角形最小路径和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|121 | 买卖股票的最佳时机 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|122 | 买卖股票的最佳时机 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|125 | 验证回文串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|129 | 求根节点到叶节点数字之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|136 | 只出现一次的数字 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|137 | 只出现一次的数字 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|144 | 二叉树的前序遍历 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|145 | 二叉树的后序遍历 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|150 | 逆波兰表达式求值 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|151 | 翻转字符串里的单词 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|152 | 乘积最大子数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|153 | 寻找旋转排序数组中的最小值 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|155 | 最小栈 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|162 | 寻找峰值 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|165 | 比较版本号 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|166 | 分数到小数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|167 | 两数之和 II - 输入有序数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|168 | Excel表列名称 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|169 | 多数元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|171 | Excel表列序号 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|172 | 阶乘后的零 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|173 | 二叉搜索树迭代器 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|187 | 重复的DNA序列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|190 | 颠倒二进制位 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|191 | 位1的个数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|198 | 打家劫舍 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|199 | 二叉树的右视图 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|200 | 岛屿数量 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|201 | 数字范围按位与 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|202 | 快乐数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|203 | 移除链表元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|204 | 计数质数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|205 | 同构字符串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|206 | 反转链表 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|208 | 实现 Trie (前缀树) | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|211 | 添加与搜索单词 - 数据结构设计 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|213 | 打家劫舍 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|215 | 数组中的第K个最大元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|216 | 组合总和 III | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|217 | 存在重复元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|219 | 存在重复元素 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|222 | 完全二叉树的节点个数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|223 | 矩形面积 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|225 | 用队列实现栈 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|226 | 翻转二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|228 | 汇总区间 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|229 | 求众数 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|230 | 二叉搜索树中第K小的元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|231 | 2 的幂 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|232 | 用栈实现队列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|234 | 回文链表 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|235 | 二叉搜索树的最近公共祖先 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|238 | 除自身以外数组的乘积 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|242 | 有效的字母异位词 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|257 | 二叉树的所有路径 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|258 | 各位相加 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|263 | 丑数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|268 | 丢失的数字 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|274 | H 指数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|278 | 第一个错误的版本 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|279 | 完全平方数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|290 | 单词规律 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|303 | 区域和检索 - 数组不可变 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|318 | 最大单词长度乘积 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|319 | 灯泡开关 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|326 | 3的幂 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|349 | 两个数组的交集 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|357 | 计算各个位数不同的数字个数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|367 | 有效的完全平方数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|371 | 两整数之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|374 | 猜数字大小 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|387 | 字符串中的第一个唯一字符 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|404 | 左叶子之和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|419 | 甲板上的战舰 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|423 | 从英文中重建数字 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|434 | 字符串中的单词数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|476 | 数字的补数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|481 | 神奇字符串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|500 | 键盘行 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|520 | 检测大写字母 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|528 | 交换链表中的节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|551 | 学生出勤记录 I | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|560 | 和为K的子数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|565 | 数组嵌套 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|594 | 最长和谐子序列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|617 | 合并二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|649 | Dota2 参议院 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|650 | 只有两个键的键盘 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|653 | 两数之和 IV - 输入 BST | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|658 | 找到 K 个最接近的元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|674 | 最长连续递增序列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|800 | 字母大小写全排列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|825 | 保持城市天际线 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|829 | 子域名访问计数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|857 | 较大分组的位置 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|868 | 推多米诺 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|917 | 救生艇 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|921 | 螺旋矩阵 III | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|924 | 公平的糖果棒交换 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|925 | 根据前序和后序遍历构造二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|932 | 单调数列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|979 | 增减字符串匹配 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|981 | 删列造序 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|982 | 使数组唯一的最小增量 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1002 | 最大宽度坡 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1005 | 单值二叉树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1007 | 连续差相同的数字 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1046 | 最大连续1的个数 III | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1050 | 前序遍历构造二叉搜索树 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1054 | 十进制整数的反码 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1072 | 链表中的下一个更大节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1119 | 困于环中的机器人 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1128 | 删除字符串中的所有相邻重复项 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1157 | 根到叶路径上的不足节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1210 | 删除某些元素后的数组均值 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1238 | 字母板上的路径 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1287 | 公交站间的距离 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1320 | 删除字符串中的所有相邻重复项 II | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1341 | 分割平衡字符串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1362 | 飞机座位分配概率 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1370 | 统计「优美子数组」 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1371 | 移除无效的括号 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1379 | 重构 2 行二进制矩阵 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1387 | 在受污染的二叉树中查找元素 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1411 | 二进制链表转整数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1426 | 和为零的N个唯一整数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1428 | 跳跃游戏 III | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1434 | 解码字母到整数映射 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1441 | 或运算的最小翻转次数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1468 | 检查整数及其两倍数是否存在 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1537 | 分割字符串的最大得分 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1538 | 可获得的最大点数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1552 | 用栈操作构建数组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1566 | 检查单词是否为句中其他单词的前缀 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1567 | 定长子串中元音的最大数目 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1603 | 一维数组的动态和 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1604 | 不同整数的最少数目 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1620 | 检查数组对是否可以被 k 整除 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1642 | 换酒问题 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1656 | 统计好三元组 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1660 | 千位分隔数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1666 | 整理字符串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1791 | 最富有客户的资产总量 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1797 | 设计 Goal 解析器 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1806 | 比赛中的配对次数 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1807 | 十-二进制数的最少数目 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1983 | 人口最多的年份 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100273 | 用两个栈实现队列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100274 | 斐波那契数列 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100299 | 删除链表的节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100316 | 第一个只出现一次的字符 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100325 | 把数字翻译成字符串 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100333 | 二叉搜索树的第k大节点 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100344 | 股票的最大利润 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100345 | 求1+2+…+n | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100349 | 最大数值 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100352 | 跳水板 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|100353 | 平分正方形 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | +|1000063 | 传递信息 | [src](https://github.com/rustors/leetcode/blob/main/src/bin/.rs) | [leetcode](https://leetcode-cn.com/problems//) | diff --git a/src/all.rs b/src/all.rs new file mode 100644 index 00000000..31a783c2 --- /dev/null +++ b/src/all.rs @@ -0,0 +1,41 @@ +use crate::file; + +use std::sync::{Arc, Mutex}; +use std::thread; +use crate::http::Resp; + + +/// 重新格式化 +pub fn all() { + let files = file::get_all_bin_file(); + + let v = Vec::::with_capacity(files.len()); + + let x = Arc::new(Mutex::new(v)); + let mut handlers = vec![]; + + for i in 0..=files.len() / 10 { + // 把files分块,分成10个文件一块 + let files = if i * 10 + 10 > files.len() { + files[i * 10..files.len()].to_vec() + } else { + files[i * 10..i * 10 + 10].to_vec() + }; + + let x = x.clone(); + + handlers.push(thread::spawn(move || { + for i in files { + println!("{} downloading", i); + let resp = crate::http::get_question_info(&i); + x.lock().unwrap().push(resp); + } + })) + } + + for i in handlers { + i.join().unwrap(); + } + + crate::file::write_readme(&mut *x.lock().unwrap()); +} diff --git a/src/bin/boats-to-save-people.rs b/src/bin/boats-to-save-people.rs index 9f622e60..f1306380 100644 --- a/src/bin/boats-to-save-people.rs +++ b/src/bin/boats-to-save-people.rs @@ -44,7 +44,7 @@ impl Solution { count } - pub fn num_rescue_boats(mut people: Vec, limit: i32) -> i32 { + pub fn num_rescue_boats(people: Vec, limit: i32) -> i32 { let mut v = vec![0; (limit + 1) as usize]; for i in people { diff --git a/src/bin/climbing-stairs.rs b/src/bin/climbing-stairs.rs index f59f0560..e9c3e658 100644 --- a/src/bin/climbing-stairs.rs +++ b/src/bin/climbing-stairs.rs @@ -1,4 +1,4 @@ -use std::ptr::hash; + fn main() {} @@ -12,7 +12,7 @@ impl Solution { let (mut a, mut b) = (1, 2); - for i in 3..=n { + for _i in 3..=n { let a1 = a; a = b; b = a1 + b; diff --git a/src/bin/combination-sum.rs b/src/bin/combination-sum.rs index c3d7d6f3..42b0463e 100644 --- a/src/bin/combination-sum.rs +++ b/src/bin/combination-sum.rs @@ -22,7 +22,7 @@ impl Solution { v.push(i); r.push(v); } else if i < target { - let mut x = Self::calc(&candidates, target - i); + let x = Self::calc(&candidates, target - i); for mut m in x { if !m.is_empty() { if i >= *m.last().unwrap() { diff --git a/src/bin/construct-binary-search-tree-from-preorder-traversal.rs b/src/bin/construct-binary-search-tree-from-preorder-traversal.rs index f03dcc6d..8c505305 100644 --- a/src/bin/construct-binary-search-tree-from-preorder-traversal.rs +++ b/src/bin/construct-binary-search-tree-from-preorder-traversal.rs @@ -23,7 +23,7 @@ impl TreeNode { } use std::cell::RefCell; -use std::ops::Deref; + use std::rc::Rc; struct Solution; diff --git a/src/bin/count-complete-tree-nodes.rs b/src/bin/count-complete-tree-nodes.rs index be465592..c6a5e45f 100644 --- a/src/bin/count-complete-tree-nodes.rs +++ b/src/bin/count-complete-tree-nodes.rs @@ -21,9 +21,9 @@ impl TreeNode { } } -use std::arch::x86_64::_mm_xor_pd; + use std::cell::RefCell; -use std::cmp::{max, min}; + use std::rc::Rc; impl Solution { @@ -70,7 +70,7 @@ impl Solution { } while max_count - min_count > 1 { - let mut middle = (min_count + max_count) / 2; + let middle = (min_count + max_count) / 2; let e = exists(root.as_ref(), middle, level); if e { diff --git a/src/bin/fei-bo-na-qi-shu-lie-lcof.rs b/src/bin/fei-bo-na-qi-shu-lie-lcof.rs index b31eb2b8..d46a7f45 100644 --- a/src/bin/fei-bo-na-qi-shu-lie-lcof.rs +++ b/src/bin/fei-bo-na-qi-shu-lie-lcof.rs @@ -8,7 +8,7 @@ impl Solution { return n; } let (mut last, mut result) = (1, 1); - for i in 2..n { + for _i in 2..n { let result1 = result + last; last = result; result = result1 % 1000000007; diff --git a/src/bin/find-k-closest-elements.rs b/src/bin/find-k-closest-elements.rs index 400413a1..3cca7127 100644 --- a/src/bin/find-k-closest-elements.rs +++ b/src/bin/find-k-closest-elements.rs @@ -27,7 +27,7 @@ impl Solution { } let index = Self::split(&arr, x); - let (mut start, mut end, mut k) = (index, index, k as usize); + let (mut start, mut end, k) = (index, index, k as usize); while end - start < k - 1 { if start == 0 { end += 1; diff --git a/src/bin/group-anagrams.rs b/src/bin/group-anagrams.rs index 6930c5b7..2f8aa01f 100644 --- a/src/bin/group-anagrams.rs +++ b/src/bin/group-anagrams.rs @@ -16,7 +16,7 @@ impl Solution { .or_insert(vec![i]); } - hash.into_iter().map(|(x, y)| y).collect() + hash.into_iter().map(|(_x, y)| y).collect() } // 计算字母出现的个数 @@ -37,6 +37,6 @@ impl Solution { } } - hash.into_iter().map(|(x, y)| y).collect() + hash.into_iter().map(|(_x, y)| y).collect() } } diff --git a/src/bin/kth-largest-element-in-an-array.rs b/src/bin/kth-largest-element-in-an-array.rs index 2755ec33..a2d8b662 100644 --- a/src/bin/kth-largest-element-in-an-array.rs +++ b/src/bin/kth-largest-element-in-an-array.rs @@ -17,7 +17,7 @@ impl Solution { } fn heapify(nums: &mut [i32]) { - let mut index = (nums.len() - 1) / 2; + let index = (nums.len() - 1) / 2; for i in (0..=index).rev() { Self::down_heap(nums, i); diff --git a/src/bin/least-number-of-unique-integers-after-k-removals.rs b/src/bin/least-number-of-unique-integers-after-k-removals.rs index 8bb9061c..254eae6c 100644 --- a/src/bin/least-number-of-unique-integers-after-k-removals.rs +++ b/src/bin/least-number-of-unique-integers-after-k-removals.rs @@ -10,7 +10,7 @@ impl Solution { h.entry(i).and_modify(|x| *x += 1).or_insert(1); } - let mut s = h.iter().map(|(x, y)| *y).collect::>(); + let mut s = h.iter().map(|(_x, y)| *y).collect::>(); s.sort(); let (mut l, mut k) = (h.len(), k); diff --git a/src/bin/letter-case-permutation.rs b/src/bin/letter-case-permutation.rs index bfb06fc6..e64a96dd 100644 --- a/src/bin/letter-case-permutation.rs +++ b/src/bin/letter-case-permutation.rs @@ -11,7 +11,7 @@ impl Solution { fn func(s: String, v: &mut Vec, index: usize) { let mut new_s = s.clone(); - let mut new_s = unsafe { new_s.as_bytes_mut() }; + let new_s = unsafe { new_s.as_bytes_mut() }; v.push(s); if index == new_s.len() { return; diff --git a/src/bin/longest-substring-without-repeating-characters.rs b/src/bin/longest-substring-without-repeating-characters.rs index a97941a0..17074cb5 100644 --- a/src/bin/longest-substring-without-repeating-characters.rs +++ b/src/bin/longest-substring-without-repeating-characters.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; + fn main() { assert_eq!(2, Solution::length_of_longest_substring("aab".to_string())); diff --git a/src/bin/magical-string.rs b/src/bin/magical-string.rs index 9c0bb0de..78a2d31d 100644 --- a/src/bin/magical-string.rs +++ b/src/bin/magical-string.rs @@ -3,7 +3,7 @@ fn main() {} struct Solution; impl Solution { - pub fn magical_string(mut n: i32) -> i32 { + pub fn magical_string(n: i32) -> i32 { if n == 0 { return 0; } diff --git a/src/bin/majority-element-ii.rs b/src/bin/majority-element-ii.rs index ebd668a4..da595299 100644 --- a/src/bin/majority-element-ii.rs +++ b/src/bin/majority-element-ii.rs @@ -22,8 +22,8 @@ impl Solution { } m.iter() - .filter(|(&x, &y)| y > length) - .map(|(&x, &y)| x) + .filter(|(&_x, &y)| y > length) + .map(|(&x, &_y)| x) .collect() } @@ -106,7 +106,7 @@ impl Solution { None }) .filter(|x| x.is_some()) - .map(|mut x| x.unwrap()) + .map(|x| x.unwrap()) .collect() } } diff --git a/src/bin/maximum-population-year.rs b/src/bin/maximum-population-year.rs new file mode 100644 index 00000000..c6ac123d --- /dev/null +++ b/src/bin/maximum-population-year.rs @@ -0,0 +1,27 @@ +fn main() {} + +struct Solution; + +impl Solution { + pub fn maximum_population(logs: Vec>) -> i32 { + let mut v = vec![0; 1000]; + + for i in logs { + for x in (i[0] - 1950) as usize..(i[1] - 1950) as usize { + v[x] += 1; + } + } + + let mut max = 0; + + for i in 1..v.len() { + max = if v[i] > v[max] { + i + } else { + max + } + } + + max as i32 + 1950 + } +} diff --git a/src/bin/maximum-product-of-word-lengths.rs b/src/bin/maximum-product-of-word-lengths.rs index f4222d3d..5a8a6686 100644 --- a/src/bin/maximum-product-of-word-lengths.rs +++ b/src/bin/maximum-product-of-word-lengths.rs @@ -8,7 +8,7 @@ impl Solution { for i in 0..words.len() { for &j in words[i].as_bytes() { - v[i] |= (1 << (j - b'a')); + v[i] |= 1 << (j - b'a'); } } diff --git a/src/bin/number-complement.rs b/src/bin/number-complement.rs index 4524a6bd..bd555552 100644 --- a/src/bin/number-complement.rs +++ b/src/bin/number-complement.rs @@ -8,7 +8,7 @@ fn main() { struct Solution; impl Solution { - pub fn find_complement(mut num: i32) -> i32 { + pub fn find_complement(num: i32) -> i32 { let lz = num.leading_zeros(); !num << lz >> lz } diff --git a/src/bin/qiu-12n-lcof.rs b/src/bin/qiu-12n-lcof.rs index 6e4f22ea..deecdbe5 100644 --- a/src/bin/qiu-12n-lcof.rs +++ b/src/bin/qiu-12n-lcof.rs @@ -6,7 +6,10 @@ impl Solution { pub fn sum_nums(n: i32) -> i32 { let mut n = n; // 利用布尔短路的思想,n == 0 时,不会允许&&后面的表达式 - n > 0 && (n += Self::sum_nums(n - 1)) == (); + if n > 0 { + n += Self::sum_nums(n - 1); + } + n } } diff --git a/src/bin/reverse-linked-list.rs b/src/bin/reverse-linked-list.rs index eed6ff9e..6d8f19f1 100644 --- a/src/bin/reverse-linked-list.rs +++ b/src/bin/reverse-linked-list.rs @@ -34,7 +34,7 @@ impl Solution { let mut root = v.pop().unwrap(); let mut s = &mut root; while !v.is_empty() { - let mut node = v.pop().unwrap(); + let node = v.pop().unwrap(); s.as_mut().unwrap().next = node; s = &mut s.as_mut().unwrap().next; } diff --git a/src/bin/reverse-words-in-a-string.rs b/src/bin/reverse-words-in-a-string.rs index b8ea1f8e..9d7b1982 100644 --- a/src/bin/reverse-words-in-a-string.rs +++ b/src/bin/reverse-words-in-a-string.rs @@ -7,7 +7,7 @@ impl Solution { if s.is_empty() { return s; } - let mut s = s.as_bytes(); + let s = s.as_bytes(); let (mut start, mut end) = (0, s.len() - 1); for i in 0..s.len() { diff --git a/src/bin/robot-bounded-in-circle.rs b/src/bin/robot-bounded-in-circle.rs index 36835226..22c9c478 100644 --- a/src/bin/robot-bounded-in-circle.rs +++ b/src/bin/robot-bounded-in-circle.rs @@ -6,7 +6,7 @@ struct Solution; impl Solution { /// 只有(x,y)不是原点,并且方向和原来的方向一致,最后才回不去 - pub fn is_robot_bounded(mut instructions: String) -> bool { + pub fn is_robot_bounded(instructions: String) -> bool { let mut start = (0, 0); let mut direction = 0u8; // 当前的方向,0为向前,1为向左,2为向后,3为向右 diff --git a/src/bin/search-in-rotated-sorted-array.rs b/src/bin/search-in-rotated-sorted-array.rs index c4aa4ee8..469d17ee 100644 --- a/src/bin/search-in-rotated-sorted-array.rs +++ b/src/bin/search-in-rotated-sorted-array.rs @@ -1,4 +1,4 @@ -use std::os::macos::raw::stat; + fn main() { assert_eq!(4, Solution::search(vec![4, 5, 6, 7, 8, 1, 2, 3], 8)); diff --git a/src/bin/sqrtx.rs b/src/bin/sqrtx.rs index d50cceeb..d0aa6ef9 100644 --- a/src/bin/sqrtx.rs +++ b/src/bin/sqrtx.rs @@ -4,7 +4,7 @@ struct Solution; impl Solution { pub fn my_sqrt(x: i32) -> i32 { - let mut s = x as f64; + let s = x as f64; let mut x1 = x as f64; while (s - x1 * x1).abs() > 0.1 { diff --git a/src/bin/summary-ranges.rs b/src/bin/summary-ranges.rs index bce0649f..263dfb5e 100644 --- a/src/bin/summary-ranges.rs +++ b/src/bin/summary-ranges.rs @@ -1,4 +1,4 @@ -use serde_json::ser::CharEscape::Solidus; + fn main() { println!("{:?}", Solution::summary_ranges(vec![0, 1, 2, 4, 5, 7])); diff --git a/src/bin/swapping-nodes-in-a-linked-list.rs b/src/bin/swapping-nodes-in-a-linked-list.rs index 9519281d..61d8f29e 100644 --- a/src/bin/swapping-nodes-in-a-linked-list.rs +++ b/src/bin/swapping-nodes-in-a-linked-list.rs @@ -58,8 +58,8 @@ impl Solution { index += 1; } - let f = k_node.unwrap().val; - let s = slow.unwrap().val; + let _f = k_node.unwrap().val; + let _s = slow.unwrap().val; head } diff --git a/src/file.rs b/src/file.rs new file mode 100644 index 00000000..a1eb67e1 --- /dev/null +++ b/src/file.rs @@ -0,0 +1,110 @@ +use std::fs::{self, File}; +use std::io::Write; +use lazy_static::lazy_static; +use regex::Regex; + +use crate::http::{Resp, Data, Ques}; + +lazy_static!( + static ref RE: Regex = Regex::new(r"\|\s*([0-9]*)\s*\|\s*(.*?)\s*\|.*?bin/(.*?).rs.*?\|.*?\|").unwrap(); +); + +/// 将结果写入README.md中 +pub fn write_readme(r: &mut Vec) { + // 先按id排序 + r.sort_by(|x, y| { + let x_id = x.data.question.question_id.parse::().unwrap(); + let y_id = y.data.question.question_id.parse::().unwrap(); + x_id.cmp(&y_id) + }); + let s = crate::render::render(r).unwrap(); + + match std::fs::write("README.md", s) { + Ok(_) => (), + Err(e) => println!("写入 README.md 失败,err{}", e.to_string()) + } +} + +/// 获取 src/bin 目录下所有文件的名称 +pub fn get_all_bin_file() -> Vec { + let dir = fs::read_dir("src/bin/").unwrap(); + dir. + into_iter(). + map(|x| { + x.unwrap().file_name().to_str().unwrap().trim_end_matches(".rs").to_string() + }). + collect() +} + + +/// 创建 bin/{quest_name}.rs 文件 +pub fn write_question(resp: Resp) { + let file = format!("src/bin/{}.rs", resp.data.question.title_slug); + if std::path::Path::new(file.as_str()).exists() { + println!("{} exists", file); + return; + } + + let mut f = File::create(file.as_str()).unwrap(); + let mut s = String::new(); + s.push_str("fn main() {}\n\nstruct Solution;\n\n"); + + for i in resp.data.question.code_snippets { + if i.lang == "Rust" { + s.push_str(i.code.replace("↵", "\n").as_str()); + s.push('\n'); + break; + } + } + + f.write_all(s.as_bytes()).unwrap(); +} + +/// 解析README.md +pub fn parse_readme() -> Vec { + let contents = fs::read_to_string("README.md").unwrap(); + parse(&contents) +} + +fn parse(contents: &str) -> Vec { + let mut v = vec![]; + for content in contents.split('\n') { + for i in RE.captures_iter(content.trim()) { + v.push(Resp { + data: Data { + question: Ques { + question_id: i.get(1).unwrap().as_str().to_string(), + translated_title: i.get(2).unwrap().as_str().to_string(), + title_slug: String::new(), + code_snippets: vec![], + difficulty: String::new(), + } + }, + }) + } + } + + v +} + +#[cfg(test)] +mod tests { + use crate::file::{parse, get_all_bin_file}; + + #[test] + fn test_parse_readme() { + let contents = std::fs::read_to_string("README.md").unwrap(); + let x = parse(&contents); + println!("{:?}", x); + println!("{}", x.len()); + + for i in x { + println!("{}", i.data.question.translated_title); + } + } + + #[test] + fn test_get_all_bin_file() { + println!("{:?}", get_all_bin_file()); + } +} \ No newline at end of file diff --git a/src/git.rs b/src/git.rs new file mode 100644 index 00000000..fb9591b8 --- /dev/null +++ b/src/git.rs @@ -0,0 +1,62 @@ +use git2::{Repository, StatusOptions}; + +use std::process::Command; + +/// 把新文件加入到git中 +pub fn push() { + // 解析readme.md文件 + let mut r = crate::file::parse_readme(); + let new_file = get_uncommit_files(); + for i in new_file.iter() { + let x = i.trim_end_matches(".rs"); // 去掉后缀 + let x = x.trim_start_matches("src/bin/"); // 去掉路径 + git_add(i); + r.push(crate::http::get_question_info(x)); + } + + crate::file::write_readme(&mut r); + git_add("README.md"); + push_to_origin(); +} + + +fn get_uncommit_files() -> Vec { + let mut options = StatusOptions::new(); + options.pathspec("src/bin"); + options.include_untracked(true); + let repo = Repository::open(".").unwrap(); + let statuses = repo.statuses(Some(&mut options)).unwrap(); + + statuses + .iter() + .map(|x| String::from(x.path().unwrap())) + .collect() +} + +fn git_add(file: &str) { + Command::new("git").arg("add").arg(file).output().unwrap(); + let output = Command::new("git") + .arg("commit") + .arg("-m") + .arg(file) + .output() + .unwrap(); + + println!("{}", String::from_utf8(output.stdout).unwrap()); +} + +pub fn push_to_origin() { + let output = Command::new("git").arg("push").output().unwrap(); + println!("{}", String::from_utf8(output.stdout).unwrap()); +} + + +#[cfg(test)] +mod tests { + use crate::git::get_uncommit_files; + + #[test] + fn test_get_uncommit_files() { + println!("{:?}", get_uncommit_files()); + } +} \ No newline at end of file diff --git a/src/http.rs b/src/http.rs new file mode 100644 index 00000000..b8a45026 --- /dev/null +++ b/src/http.rs @@ -0,0 +1,77 @@ +use lazy_static::lazy_static; +use regex::Regex; +use reqwest::blocking::Client; +use serde::{Serialize, Deserialize}; + + +lazy_static! { + static ref RE: Regex = Regex::new(r".*?/problems/(.*?)/").unwrap(); +} + +const URL: &str = "https://leetcode-cn.com/graphql/"; + +#[derive(Deserialize, Serialize, Debug)] +pub struct Ques { + #[serde(rename = "questionId")] + pub question_id: String, + #[serde(rename = "titleSlug")] + pub title_slug: String, + #[serde(rename = "translatedTitle")] + pub translated_title: String, + #[serde(rename = "codeSnippets")] + pub code_snippets: Vec, + #[serde(rename = "difficulty")] + pub difficulty: String, +} + +#[derive(Deserialize, Serialize, Debug)] +pub struct CodeSnippets { + #[serde(rename = "code")] + pub code: String, + #[serde(rename = "lang")] + pub lang: String, + #[serde(rename = "langSlug")] + pub lang_slug: String, + #[serde(rename = "__typename")] + pub typename: String, +} + +#[derive(Deserialize, Serialize, Debug)] +pub struct Data { + pub question: Ques, +} + +#[derive(Deserialize, Serialize, Debug)] +pub struct Resp { + pub data: Data, +} + +pub fn get_question_info(mut ques: &str) -> Resp { + if ques.starts_with("http") { + ques = RE.captures_iter(ques).next().unwrap().get(1).unwrap().as_str(); + } + + let data_fmt = r#"{"operationName":"questionData","variables":{"titleSlug":"{}"}, + "query":"query questionData($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n questionId\n questionFrontendId\n boundTopicId\n title\n titleSlug\n content\n translatedTitle\n translatedContent\n isPaidOnly\n difficulty\n likes\n dislikes\n isLiked\n similarQuestions\n contributors {\n username\n profileUrl\n avatarUrl\n __typename\n }\n langToValidPlayground\n topicTags {\n name\n slug\n translatedName\n __typename\n }\n companyTagStats\n codeSnippets {\n lang\n langSlug\n code\n __typename\n }\n stats\n hints\n solution {\n id\n canSeeDetail\n __typename\n }\n status\n sampleTestCase\n metaData\n judgerAvailable\n judgeType\n mysqlSchemas\n enableRunCode\n envInfo\n book {\n id\n bookName\n pressName\n source\n shortDescription\n fullDescription\n bookImgUrl\n pressImgUrl\n productUrl\n __typename\n }\n isSubscribed\n isDailyQuestion\n dailyRecordStatus\n editorType\n ugcQuestionId\n style\n __typename\n }\n}\n"}"#; + let data = data_fmt.replace("{}", ques); + + Client::new() + .post(URL) + .header("content-type", "application/json") + .body(data) + .send() + .unwrap() + .json::() + .unwrap() +} + +#[cfg(test)] +mod tests { + use crate::http::get_question_info; + + #[test] + fn test_get_question_info() { + println!("{:?}", get_question_info("container-with-most-water")); + println!("{:?}", get_question_info("https://leetcode-cn.com/problems/container-with-most-water/")); + } +} diff --git a/src/lib.rs b/src/lib.rs index 914ce1c3..993a91c2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,295 +1,34 @@ -#[cfg(test)] -mod tests { - use super::*; - use crate::{get_new_file_in_bin, get_question_msg, get_question_num}; - - #[test] - fn it_works() { - assert_eq!(2 + 2, 4); - } - - #[test] - fn test_get_new_file_in_bin() { - println!("{:?}", get_new_file_in_bin()); - } - - #[test] - fn test_get_question_num() { - assert_eq!(13usize, get_question_num()); - } - - #[test] - fn test_write_to_readme() { - let resp = get_question_msg("maximum-points-you-can-obtain-from-cards"); - write_to_readme(resp); - } - - #[test] - fn test_get_question_no() { - assert_eq!(374, get_question_no("- 374:猜数字大小")); - assert_eq!(367, get_question_no("- 367:有效的完全平方数")); - } - - #[test] - fn test_get_question_msg() { - println!( - "{:?}", - get_question_msg("maximum-points-you-can-obtain-from-cards") - ); - } - - #[test] - fn test_make_new_file() { - make_new_file(get_question_msg("shu-de-zi-jie-gou-lcof")); - } -} - -extern crate reqwest; - -use git2::{Repository, StatusOptions}; -use serde::Deserialize; -use std::fs::{self, File}; -use std::io::Write; -use std::process::Command; - -/// 获取bin目录下新加的文件 -pub fn get_new_file_in_bin() -> Vec { - let mut options = StatusOptions::new(); - options.include_untracked(true); - let repo = Repository::open(".").unwrap(); - let statuses = repo.statuses(Some(&mut options)).unwrap(); - - statuses - .iter() - .filter(|x| x.path().unwrap().starts_with("src/bin/")) - .map(|x| String::from(x.path().unwrap())) - .map(|x| { - let x = x.trim_end_matches(".rs"); // 去掉路径 - let x = x.trim_start_matches("src/bin/"); // 去掉后缀 - x.to_string() - }) - .collect() -} - -#[derive(Deserialize, Debug)] -pub struct Ques { - #[serde(rename = "questionId")] - question_id: String, - #[serde(rename = "titleSlug")] - title_slug: String, - #[serde(rename = "translatedTitle")] - pub translated_title: String, - #[serde(rename = "codeSnippets")] - code_snippets: Vec, -} - -#[derive(Deserialize, Debug)] -pub struct CodeSnippets { - #[serde(rename = "code")] - code: String, - #[serde(rename = "lang")] - lang: String, - #[serde(rename = "langSlug")] - lang_slug: String, - #[serde(rename = "__typename")] - typename: String, -} - -#[derive(Deserialize, Debug)] -pub struct Data { - pub question: Ques, -} - -#[derive(Deserialize, Debug)] -pub struct Resp { - pub data: Data, -} - -/// 通过名字获取题目的ID -pub fn get_question_msg(name: &str) -> Resp { - let url = "https://leetcode-cn.com/graphql/"; - let data_fmt = r#"{"operationName":"questionData","variables":{"titleSlug":"{}"},"query":"query questionData($titleSlug: String!) {\n question(titleSlug: $titleSlug) {\n questionId\n questionFrontendId\n boundTopicId\n title\n titleSlug\n content\n translatedTitle\n translatedContent\n isPaidOnly\n difficulty\n likes\n dislikes\n isLiked\n similarQuestions\n contributors {\n username\n profileUrl\n avatarUrl\n __typename\n }\n langToValidPlayground\n topicTags {\n name\n slug\n translatedName\n __typename\n }\n companyTagStats\n codeSnippets {\n lang\n langSlug\n code\n __typename\n }\n stats\n hints\n solution {\n id\n canSeeDetail\n __typename\n }\n status\n sampleTestCase\n metaData\n judgerAvailable\n judgeType\n mysqlSchemas\n enableRunCode\n envInfo\n book {\n id\n bookName\n pressName\n source\n shortDescription\n fullDescription\n bookImgUrl\n pressImgUrl\n productUrl\n __typename\n }\n isSubscribed\n isDailyQuestion\n dailyRecordStatus\n editorType\n ugcQuestionId\n style\n __typename\n }\n}\n"}"#; - let data = data_fmt.replace("{}", name); - reqwest::blocking::Client::new() - .post(url) - .header("content-type", "application/json") - .body(data) - .send() - .unwrap() - .json::() - .unwrap() -} - -/// 把问题写到README.md中 -pub fn write_to_readme(question_info: Resp) { - let readme = fs::read_to_string("README.md").unwrap(); - let mut write_string = String::new(); - write_string.push_str("# leetcode\n\n"); - write_string.push_str(format!("当前已刷:{}\n\n", get_question_num()).as_str()); - write_string.push_str("### 题目\n"); - - let mut f = File::create("README.md").unwrap(); - - let mut index = 0usize; - let split = readme.split('\n').into_iter().collect::>(); - let mut flag = false; - let mut flag1 = false; - let no = question_info - .data - .question - .question_id - .parse::() - .unwrap(); - while index + 3 < split.len() { - if !flag { - if split[index] == "### 题目" { - flag = true; - } - index += 1; - continue; - } - - let i1 = get_question_no(split[index]); - - if i1 == no { - continue; - } - - if !flag1 && i1 > no { - flag1 = true; - write_string.push_str( - format!( - "- {}:{}\n", - no, question_info.data.question.translated_title - ) - .as_str(), - ); - write_string.push_str( - format!( - " - [src](https://github.com/rustors/leetcode/blob/main/src/bin/{}.rs)\n", - question_info.data.question.title_slug - ) - .as_str(), - ); - write_string.push_str( - format!( - " - [leetcode](https://leetcode-cn.com/problems/{}/)\n", - question_info.data.question.title_slug - ) - .as_str(), - ); - } - - write_string.push_str( - format!( - "{}\n{}\n{}\n", - split[index], - split[index + 1], - split[index + 2] - ) - .as_str(), - ); - index += 3; - } - - if !flag1 { - write_string.push_str( - format!( - "- {}:{}\n", - no, question_info.data.question.translated_title - ) - .as_str(), - ); - write_string.push_str( - format!( - " - [src](https://github.com/rustors/leetcode/blob/main/src/bin/{}.rs)\n", - question_info.data.question.title_slug - ) - .as_str(), - ); - write_string.push_str( - format!( - " - [leetcode](https://leetcode-cn.com/problems/{}/)\n", - question_info.data.question.title_slug - ) - .as_str(), - ); - } - - let _ = f.write(write_string.as_bytes()); -} - -/// 获取题目总数 -fn get_question_num() -> usize { - let dir = fs::read_dir("src/bin/").unwrap(); - - dir.into_iter() - .filter(|x| { - if let Ok(f) = x { - f.file_name().to_str().unwrap().ends_with(".rs") - } else { - false - } - }) - .count() -} - -/// 获取题目的编号 -fn get_question_no(s: &str) -> i32 { - s.split(':').into_iter().collect::>()[0] - .trim_end_matches(':') - .trim_start_matches('-') - .trim_start() - .parse::() - .unwrap() -} - -/// git add -pub fn git_add_commit_files(files: Vec) { - for file in files.iter() { - add_and_commit(format!("src/bin/{}.rs", file).as_str()); // 将新加的文件提交到git仓库 - } - - add_and_commit("README.md"); // 将修改的README.md提交到git仓库 - push_to_origin(); // 将文件 -} - -pub fn add_and_commit(file: &str) { - Command::new("git").arg("add").arg(file).output().unwrap(); - let output = Command::new("git") - .arg("commit") - .arg("-m") - .arg(file) - .output() - .unwrap(); - - println!("{}", String::from_utf8(output.stdout).unwrap()); -} - -pub fn push_to_origin() { - let output = Command::new("git").arg("push").output().unwrap(); - println!("{}", String::from_utf8(output.stdout).unwrap()); -} - -/// 通过题目名获取rust答题模板 -pub fn make_new_file(resp: Resp) { - let file = format!("src/bin/{}.rs", resp.data.question.title_slug); - if std::path::Path::new(file.as_str()).exists() { - println!("{} exists", file); - return; - } - - let mut f = File::create(file.as_str()).unwrap(); - let mut s = String::new(); - s.push_str("fn main() {}\n\nstruct Solution;\n\n"); - - for i in resp.data.question.code_snippets { - if i.lang == "Rust" { - s.push_str(i.code.replace("↵", "\n").as_str()); - s.push_str("\n"); - break; +mod new; +mod http; +mod file; +mod git; +mod render; +mod all; + +use clap::{App, Arg}; + +pub fn run() { + let matches = App::new("leetcode") + .version("0.0.1") + .author("bestgopher <84328409@qq.com>") + .about("a helper for leetcode") + .subcommand(App::new("new") + .about("get a new leetcode question") + .arg(Arg::new("question_name") + .about("The configuration file to use") + .index(1))) + .subcommand(App::new("all") + .about("get all questions' info and rewrite README.md")) + .get_matches(); + + if let Some(matches) = matches.subcommand_matches("new") { + match matches.value_of_t::("question_name") { + Ok(x) => new::new(x), + Err(_) => println!("please input the name of question") } + } else if matches.subcommand_matches("all").is_some() { + all::all(); + } else { + git::push(); } - - f.write_all(s.as_bytes()).unwrap(); } diff --git a/src/main.rs b/src/main.rs index 10aa678f..449447a2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,66 +1,3 @@ -///! 根据src/bin中新加的题目生成相应的markdown文件 -use leetcode; -use leetcode::{get_question_msg, write_to_readme}; - fn main() { - let args = std::env::args().collect::>(); - if args.len() == 1 { - git(); - } else if args.len() == 2 { - if args[1].as_str() == "-a" { - all(); - } else { - new(args[1].as_str()); - } - } else { - panic!("只能有一个参数"); - } -} - -fn git() { - // 获取新加的文件 - let files = leetcode::get_new_file_in_bin(); - - for i in files.iter() { - let res = leetcode::get_question_msg(i); - leetcode::write_to_readme(res); - } - - leetcode::git_add_commit_files(files); -} - -fn all() { - let files = std::fs::read_dir("./src/bin").unwrap(); - let files = files - .into_iter() - .filter(|x| { - if let Ok(f) = x { - f.file_name().to_str().unwrap().ends_with(".rs") - } else { - false - } - }) - .map(|x| { - x.unwrap() - .file_name() - .to_str() - .unwrap() - .trim_end_matches(".rs") - .trim_start_matches("src/bin/") - .to_string() - }) - .collect::>(); - files.iter().for_each(|x| { - println!("{} start", x); - let resp = get_question_msg(x); - write_to_readme(resp); - }); - - leetcode::add_and_commit("README.md"); - leetcode::push_to_origin(); -} - -fn new(filename: &str) { - let resp = leetcode::get_question_msg(filename); - leetcode::make_new_file(resp); + leetcode::run() } diff --git a/src/new.rs b/src/new.rs new file mode 100644 index 00000000..9b1599ac --- /dev/null +++ b/src/new.rs @@ -0,0 +1,8 @@ +/// 1.获取question name +/// 2.如果name是url,就不需要拼装,不是就需要拼装 +/// 3.请求结构,获取数据 +/// 4.将数据写入bin/{question_name}.rs文件中 +pub fn new(ques: String) { + let r = crate::http::get_question_info(ques.as_str()); + crate::file::write_question(r); +} diff --git a/src/render.rs b/src/render.rs new file mode 100644 index 00000000..6345ff84 --- /dev/null +++ b/src/render.rs @@ -0,0 +1,60 @@ +use lazy_static::lazy_static; +use tera::{Tera, Context, Result as TeraResult}; + +/// 模板内容 +const TEMPLATE_STR: &str = r"# leetcode + +当前已刷:{{ datas | length }} + +### 题目 + +| 编号 | 题目 | 描述 | 代码 | +| ---- | ----- | ------------------------------------------------------------ | ----------------------------------------------------- | +{% for t in datas %}|{{ t.data.question.questionId }} | {{ t.data.question.translatedTitle }} | [src](https://github.com/rustors/leetcode/blob/main/src/bin/{{ t.data.question.titleSlug }}.rs) | [leetcode](https://leetcode-cn.com/problems/{{ t.data.question.titleSlug }}/) | +{% endfor %}"; + +/// 模板名字 +const TEMPLATE_NAME: &str = "leetcode"; + +lazy_static!( + /// 用于渲染的模板 + pub static ref TEMPLATE: Tera = { + let mut tera = Tera::default(); + tera.add_raw_template(TEMPLATE_NAME, TEMPLATE_STR).unwrap(); + tera + }; +); + + +/// 把传入的内容渲染为模板内容 +pub fn render(data: &[crate::http::Resp]) -> TeraResult { + let mut ctx = Context::new(); + ctx.insert("datas", data); + + TEMPLATE.render(TEMPLATE_NAME, &ctx) +} + +#[cfg(test)] +mod tests { + use crate::http::{Resp, Ques, Data}; + use crate::render::render; + + #[test] + fn test_render() { + let data = vec![ + Resp { + data: Data { + question: Ques { + question_id: "111".to_string(), + title_slug: "aaa".to_string(), + translated_title: "中国".to_string(), + code_snippets: vec![], + difficulty: String::new(), + } + }, + }, + ]; + + println!("{:?}", render(&data).unwrap().to_string()); + } +}