From 90606c3928bcb57c7df31877d84829f2a3a680aa Mon Sep 17 00:00:00 2001 From: yanglbme Date: Thu, 14 Dec 2023 12:36:41 +0800 Subject: [PATCH] feat: use slices.Clone in go code snippets --- .../README.md" | 4 +--- .../Solution.go" | 4 +--- .../README.md" | 4 +--- .../Solution.go" | 4 +--- .../README.md" | 4 +--- .../Solution.go" | 4 +--- .../README.md" | 4 +--- .../Solution.go" | 4 +--- .../0000-0099/0039.Combination Sum/README.md | 8 ++----- .../0039.Combination Sum/README_EN.md | 8 ++----- .../0039.Combination Sum/Solution.go | 4 +--- .../0040.Combination Sum II/README.md | 22 +++++++----------- .../0040.Combination Sum II/README_EN.md | 22 +++++++----------- .../0040.Combination Sum II/Solution.go | 4 +--- .../0000-0099/0046.Permutations/README.md | 4 +--- .../0000-0099/0046.Permutations/README_EN.md | 4 +--- .../0000-0099/0046.Permutations/Solution.go | 4 +--- .../0000-0099/0047.Permutations II/README.md | 4 +--- .../0047.Permutations II/README_EN.md | 4 +--- .../0047.Permutations II/Solution.go | 4 +--- .../0000-0099/0077.Combinations/README.md | 8 ++----- .../0000-0099/0077.Combinations/README_EN.md | 8 ++----- .../0000-0099/0077.Combinations/Solution.go | 4 +--- solution/0100-0199/0113.Path Sum II/README.md | 4 +--- .../0100-0199/0113.Path Sum II/README_EN.md | 4 +--- .../0100-0199/0113.Path Sum II/Solution.go | 4 +--- .../0216.Combination Sum III/README.md | 8 ++----- .../0216.Combination Sum III/README_EN.md | 10 +++----- .../0216.Combination Sum III/Solution.go | 4 +--- .../0254.Factor Combinations/README.md | 5 +--- .../0254.Factor Combinations/README_EN.md | 5 +--- .../0254.Factor Combinations/Solution.go | 5 +--- .../README.md | 4 +--- .../README_EN.md | 4 +--- .../Solution.go | 4 +--- .../1702370216-mKQcTt-1506_skiplist.gif | Bin 0 -> 44777 bytes .../README.md | 6 ++--- .../README_EN.md | 6 ++--- .../Solution.go | 6 ++--- 39 files changed, 64 insertions(+), 159 deletions(-) create mode 100644 solution/1200-1299/1206.Design Skiplist/images/1702370216-mKQcTt-1506_skiplist.gif diff --git "a/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/README.md" "b/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/README.md" index 67635eab1ce2d..3d7bfb705ffb3 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/README.md" +++ "b/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/README.md" @@ -193,9 +193,7 @@ func pathSum(root *TreeNode, target int) (ans [][]int) { t = append(t, root.Val) s -= root.Val if root.Left == nil && root.Right == nil && s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } dfs(root.Left, s) dfs(root.Right, s) diff --git "a/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/Solution.go" "b/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/Solution.go" index 6e28d151125a4..eb289b001a3ab 100644 --- "a/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/Solution.go" +++ "b/lcof/\351\235\242\350\257\225\351\242\23034. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204/Solution.go" @@ -16,9 +16,7 @@ func pathSum(root *TreeNode, target int) (ans [][]int) { t = append(t, root.Val) s -= root.Val if root.Left == nil && root.Right == nil && s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } dfs(root.Left, s) dfs(root.Right, s) diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/README.md" index 335053fab3391..5bdec237ee130 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/README.md" @@ -144,9 +144,7 @@ func subsets(nums []int) [][]int { } func dfs(i int, nums, t []int, res *[][]int) { - cp := make([]int, len(t)) - copy(cp, t) - *res = append(*res, cp) + *res = append(*res, slices.Clone(t)) if i == len(nums) { return } diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/Solution.go" "b/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/Solution.go" index 2862a6a40172d..58d9f88a2ee45 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/Solution.go" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206/Solution.go" @@ -6,9 +6,7 @@ func subsets(nums []int) [][]int { } func dfs(i int, nums, t []int, res *[][]int) { - cp := make([]int, len(t)) - copy(cp, t) - *res = append(*res, cp) + *res = append(*res, slices.Clone(t)) if i == len(nums) { return } diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/README.md" index d42ad90f017fa..c9b320813e7cf 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/README.md" @@ -135,9 +135,7 @@ func combine(n int, k int) [][]int { func dfs(i, n, k int, t []int, res *[][]int) { if len(t) == k { - cp := make([]int, k) - copy(cp, t) - *res = append(*res, cp) + *res = append(*res, slices.Clone(t)) return } for j := i; j <= n; j++ { diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/Solution.go" "b/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/Solution.go" index 6b8cdc89e03ce..8bbb927196e04 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/Solution.go" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210/Solution.go" @@ -7,9 +7,7 @@ func combine(n int, k int) [][]int { func dfs(i, n, k int, t []int, res *[][]int) { if len(t) == k { - cp := make([]int, k) - copy(cp, t) - *res = append(*res, cp) + *res = append(*res, slices.Clone(t)) return } for j := i; j <= n; j++ { diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/README.md" "b/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/README.md" index 3dd5d167f51e8..82890959b19f3 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/README.md" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/README.md" @@ -174,9 +174,7 @@ func combinationSum2(candidates []int, target int) [][]int { return } if s == target { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for i := u; i < len(candidates); i++ { diff --git "a/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/Solution.go" "b/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/Solution.go" index f03b1c015a089..8be311e01f1c0 100644 --- "a/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/Solution.go" +++ "b/lcof2/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210/Solution.go" @@ -8,9 +8,7 @@ func combinationSum2(candidates []int, target int) [][]int { return } if s == target { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for i := u; i < len(candidates); i++ { diff --git a/solution/0000-0099/0039.Combination Sum/README.md b/solution/0000-0099/0039.Combination Sum/README.md index 4fb390624681e..99dfdcfbdd70c 100644 --- a/solution/0000-0099/0039.Combination Sum/README.md +++ b/solution/0000-0099/0039.Combination Sum/README.md @@ -247,9 +247,7 @@ func combinationSum(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if s < candidates[i] { @@ -273,9 +271,7 @@ func combinationSum(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { diff --git a/solution/0000-0099/0039.Combination Sum/README_EN.md b/solution/0000-0099/0039.Combination Sum/README_EN.md index 866b695870a0c..9c95b0aa203b5 100644 --- a/solution/0000-0099/0039.Combination Sum/README_EN.md +++ b/solution/0000-0099/0039.Combination Sum/README_EN.md @@ -239,9 +239,7 @@ func combinationSum(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if s < candidates[i] { @@ -265,9 +263,7 @@ func combinationSum(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { diff --git a/solution/0000-0099/0039.Combination Sum/Solution.go b/solution/0000-0099/0039.Combination Sum/Solution.go index fc30931a6ead6..d290d36a348d9 100644 --- a/solution/0000-0099/0039.Combination Sum/Solution.go +++ b/solution/0000-0099/0039.Combination Sum/Solution.go @@ -4,9 +4,7 @@ func combinationSum(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { diff --git a/solution/0000-0099/0040.Combination Sum II/README.md b/solution/0000-0099/0040.Combination Sum II/README.md index b819266debcd2..53d15433dea76 100644 --- a/solution/0000-0099/0040.Combination Sum II/README.md +++ b/solution/0000-0099/0040.Combination Sum II/README.md @@ -264,9 +264,7 @@ func combinationSum2(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { @@ -293,22 +291,20 @@ func combinationSum2(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { return } - x := candidates[i] - t = append(t, x) - dfs(i+1, s-x) - t = t[:len(t)-1] - for i < len(candidates) && candidates[i] == x { - i++ + for j := i; j < len(candidates); j++ { + if j > i && candidates[j] == candidates[j-1] { + continue + } + t = append(t, candidates[j]) + dfs(j+1, s-candidates[j]) + t = t[:len(t)-1] } - dfs(i, s) } dfs(0, target) return diff --git a/solution/0000-0099/0040.Combination Sum II/README_EN.md b/solution/0000-0099/0040.Combination Sum II/README_EN.md index f615feabe1e1d..a7ad541c7da24 100644 --- a/solution/0000-0099/0040.Combination Sum II/README_EN.md +++ b/solution/0000-0099/0040.Combination Sum II/README_EN.md @@ -256,9 +256,7 @@ func combinationSum2(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { @@ -285,22 +283,20 @@ func combinationSum2(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { return } - x := candidates[i] - t = append(t, x) - dfs(i+1, s-x) - t = t[:len(t)-1] - for i < len(candidates) && candidates[i] == x { - i++ + for j := i; j < len(candidates); j++ { + if j > i && candidates[j] == candidates[j-1] { + continue + } + t = append(t, candidates[j]) + dfs(j+1, s-candidates[j]) + t = t[:len(t)-1] } - dfs(i, s) } dfs(0, target) return diff --git a/solution/0000-0099/0040.Combination Sum II/Solution.go b/solution/0000-0099/0040.Combination Sum II/Solution.go index 86a8af5a365ec..35a320d0d6913 100644 --- a/solution/0000-0099/0040.Combination Sum II/Solution.go +++ b/solution/0000-0099/0040.Combination Sum II/Solution.go @@ -4,9 +4,7 @@ func combinationSum2(candidates []int, target int) (ans [][]int) { var dfs func(i, s int) dfs = func(i, s int) { if s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i >= len(candidates) || s < candidates[i] { diff --git a/solution/0000-0099/0046.Permutations/README.md b/solution/0000-0099/0046.Permutations/README.md index 3b0d2631888fd..faba7e6394bd5 100644 --- a/solution/0000-0099/0046.Permutations/README.md +++ b/solution/0000-0099/0046.Permutations/README.md @@ -188,9 +188,7 @@ func permute(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j, v := range nums { diff --git a/solution/0000-0099/0046.Permutations/README_EN.md b/solution/0000-0099/0046.Permutations/README_EN.md index e7624a7d18deb..1a417c4931394 100644 --- a/solution/0000-0099/0046.Permutations/README_EN.md +++ b/solution/0000-0099/0046.Permutations/README_EN.md @@ -167,9 +167,7 @@ func permute(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j, v := range nums { diff --git a/solution/0000-0099/0046.Permutations/Solution.go b/solution/0000-0099/0046.Permutations/Solution.go index decfdf2ea184e..2856587a3065b 100644 --- a/solution/0000-0099/0046.Permutations/Solution.go +++ b/solution/0000-0099/0046.Permutations/Solution.go @@ -5,9 +5,7 @@ func permute(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j, v := range nums { diff --git a/solution/0000-0099/0047.Permutations II/README.md b/solution/0000-0099/0047.Permutations II/README.md index 77b37cd61305d..00466d20e2500 100644 --- a/solution/0000-0099/0047.Permutations II/README.md +++ b/solution/0000-0099/0047.Permutations II/README.md @@ -168,9 +168,7 @@ func permuteUnique(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j := 0; j < n; j++ { diff --git a/solution/0000-0099/0047.Permutations II/README_EN.md b/solution/0000-0099/0047.Permutations II/README_EN.md index 0fc514335c30c..b6618ab4b679c 100644 --- a/solution/0000-0099/0047.Permutations II/README_EN.md +++ b/solution/0000-0099/0047.Permutations II/README_EN.md @@ -158,9 +158,7 @@ func permuteUnique(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j := 0; j < n; j++ { diff --git a/solution/0000-0099/0047.Permutations II/Solution.go b/solution/0000-0099/0047.Permutations II/Solution.go index 3a5f327dc242f..4ecb9325786e8 100644 --- a/solution/0000-0099/0047.Permutations II/Solution.go +++ b/solution/0000-0099/0047.Permutations II/Solution.go @@ -6,9 +6,7 @@ func permuteUnique(nums []int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if i == n { - cp := make([]int, n) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } for j := 0; j < n; j++ { diff --git a/solution/0000-0099/0077.Combinations/README.md b/solution/0000-0099/0077.Combinations/README.md index 1a44ac73f0538..3053c9255e6fc 100644 --- a/solution/0000-0099/0077.Combinations/README.md +++ b/solution/0000-0099/0077.Combinations/README.md @@ -239,9 +239,7 @@ func combine(n int, k int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i > n { @@ -263,9 +261,7 @@ func combine(n int, k int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i > n { diff --git a/solution/0000-0099/0077.Combinations/README_EN.md b/solution/0000-0099/0077.Combinations/README_EN.md index eecb9b404b245..235fcfe8e3bb3 100644 --- a/solution/0000-0099/0077.Combinations/README_EN.md +++ b/solution/0000-0099/0077.Combinations/README_EN.md @@ -226,9 +226,7 @@ func combine(n int, k int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i > n { @@ -250,9 +248,7 @@ func combine(n int, k int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i > n { diff --git a/solution/0000-0099/0077.Combinations/Solution.go b/solution/0000-0099/0077.Combinations/Solution.go index 134e6930b778c..ec14537d8d15e 100644 --- a/solution/0000-0099/0077.Combinations/Solution.go +++ b/solution/0000-0099/0077.Combinations/Solution.go @@ -3,9 +3,7 @@ func combine(n int, k int) (ans [][]int) { var dfs func(int) dfs = func(i int) { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) return } if i > n { diff --git a/solution/0100-0199/0113.Path Sum II/README.md b/solution/0100-0199/0113.Path Sum II/README.md index 8f5e9e900a4f2..c4246c1029fe6 100644 --- a/solution/0100-0199/0113.Path Sum II/README.md +++ b/solution/0100-0199/0113.Path Sum II/README.md @@ -189,9 +189,7 @@ func pathSum(root *TreeNode, targetSum int) (ans [][]int) { s -= root.Val t = append(t, root.Val) if root.Left == nil && root.Right == nil && s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } dfs(root.Left, s) dfs(root.Right, s) diff --git a/solution/0100-0199/0113.Path Sum II/README_EN.md b/solution/0100-0199/0113.Path Sum II/README_EN.md index bc2ffb562085b..887efcdeb6ee9 100644 --- a/solution/0100-0199/0113.Path Sum II/README_EN.md +++ b/solution/0100-0199/0113.Path Sum II/README_EN.md @@ -178,9 +178,7 @@ func pathSum(root *TreeNode, targetSum int) (ans [][]int) { s -= root.Val t = append(t, root.Val) if root.Left == nil && root.Right == nil && s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } dfs(root.Left, s) dfs(root.Right, s) diff --git a/solution/0100-0199/0113.Path Sum II/Solution.go b/solution/0100-0199/0113.Path Sum II/Solution.go index 3773923f67a4a..4835eaa2180e1 100644 --- a/solution/0100-0199/0113.Path Sum II/Solution.go +++ b/solution/0100-0199/0113.Path Sum II/Solution.go @@ -16,9 +16,7 @@ func pathSum(root *TreeNode, targetSum int) (ans [][]int) { s -= root.Val t = append(t, root.Val) if root.Left == nil && root.Right == nil && s == 0 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } dfs(root.Left, s) dfs(root.Right, s) diff --git a/solution/0200-0299/0216.Combination Sum III/README.md b/solution/0200-0299/0216.Combination Sum III/README.md index 62bf67e391af9..bff5cee6a4e65 100644 --- a/solution/0200-0299/0216.Combination Sum III/README.md +++ b/solution/0200-0299/0216.Combination Sum III/README.md @@ -376,9 +376,7 @@ func combinationSum3(k int, n int) (ans [][]int) { dfs = func(i, s int) { if s == 0 { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } @@ -402,9 +400,7 @@ func combinationSum3(k int, n int) (ans [][]int) { dfs = func(i, s int) { if s == 0 { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } diff --git a/solution/0200-0299/0216.Combination Sum III/README_EN.md b/solution/0200-0299/0216.Combination Sum III/README_EN.md index ceee2b355b273..dd1c840610a55 100644 --- a/solution/0200-0299/0216.Combination Sum III/README_EN.md +++ b/solution/0200-0299/0216.Combination Sum III/README_EN.md @@ -333,9 +333,7 @@ func combinationSum3(k int, n int) (ans [][]int) { dfs = func(i, s int) { if s == 0 { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } @@ -359,13 +357,11 @@ func combinationSum3(k int, n int) (ans [][]int) { dfs = func(i, s int) { if s == 0 { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } - if i > 9 || i > s || len(t) > k { + if i > 9 || i > s || len(t) >= k { return } for j := i; j <= 9; j++ { diff --git a/solution/0200-0299/0216.Combination Sum III/Solution.go b/solution/0200-0299/0216.Combination Sum III/Solution.go index 89951f01ee70f..5c686f42ddff4 100644 --- a/solution/0200-0299/0216.Combination Sum III/Solution.go +++ b/solution/0200-0299/0216.Combination Sum III/Solution.go @@ -4,9 +4,7 @@ func combinationSum3(k int, n int) (ans [][]int) { dfs = func(i, s int) { if s == 0 { if len(t) == k { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } diff --git a/solution/0200-0299/0254.Factor Combinations/README.md b/solution/0200-0299/0254.Factor Combinations/README.md index 2d4f20b95869b..b1659db68be44 100644 --- a/solution/0200-0299/0254.Factor Combinations/README.md +++ b/solution/0200-0299/0254.Factor Combinations/README.md @@ -163,10 +163,7 @@ func getFactors(n int) [][]int { var dfs func(n, i int) dfs = func(n, i int) { if len(t) > 0 { - cp := make([]int, len(t)) - copy(cp, t) - cp = append(cp, n) - ans = append(ans, cp) + ans = append(ans, append(slices.Clone(t), n)) } for j := i; j <= n/j; j++ { if n%j == 0 { diff --git a/solution/0200-0299/0254.Factor Combinations/README_EN.md b/solution/0200-0299/0254.Factor Combinations/README_EN.md index dc89731eb8591..e35d01122f39c 100644 --- a/solution/0200-0299/0254.Factor Combinations/README_EN.md +++ b/solution/0200-0299/0254.Factor Combinations/README_EN.md @@ -135,10 +135,7 @@ func getFactors(n int) [][]int { var dfs func(n, i int) dfs = func(n, i int) { if len(t) > 0 { - cp := make([]int, len(t)) - copy(cp, t) - cp = append(cp, n) - ans = append(ans, cp) + ans = append(ans, append(slices.Clone(t), n)) } for j := i; j <= n/j; j++ { if n%j == 0 { diff --git a/solution/0200-0299/0254.Factor Combinations/Solution.go b/solution/0200-0299/0254.Factor Combinations/Solution.go index ae887e255dd32..dc566f8d634dd 100644 --- a/solution/0200-0299/0254.Factor Combinations/Solution.go +++ b/solution/0200-0299/0254.Factor Combinations/Solution.go @@ -4,10 +4,7 @@ func getFactors(n int) [][]int { var dfs func(n, i int) dfs = func(n, i int) { if len(t) > 0 { - cp := make([]int, len(t)) - copy(cp, t) - cp = append(cp, n) - ans = append(ans, cp) + ans = append(ans, append(slices.Clone(t), n)) } for j := i; j <= n/j; j++ { if n%j == 0 { diff --git a/solution/0400-0499/0491.Non-decreasing Subsequences/README.md b/solution/0400-0499/0491.Non-decreasing Subsequences/README.md index b470cef3f509c..c41682165bd1b 100644 --- a/solution/0400-0499/0491.Non-decreasing Subsequences/README.md +++ b/solution/0400-0499/0491.Non-decreasing Subsequences/README.md @@ -143,9 +143,7 @@ func findSubsequences(nums []int) [][]int { dfs = func(u, last int, t []int) { if u == len(nums) { if len(t) > 1 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } diff --git a/solution/0400-0499/0491.Non-decreasing Subsequences/README_EN.md b/solution/0400-0499/0491.Non-decreasing Subsequences/README_EN.md index 69ad659124f77..56c78ec0af163 100644 --- a/solution/0400-0499/0491.Non-decreasing Subsequences/README_EN.md +++ b/solution/0400-0499/0491.Non-decreasing Subsequences/README_EN.md @@ -124,9 +124,7 @@ func findSubsequences(nums []int) [][]int { dfs = func(u, last int, t []int) { if u == len(nums) { if len(t) > 1 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } diff --git a/solution/0400-0499/0491.Non-decreasing Subsequences/Solution.go b/solution/0400-0499/0491.Non-decreasing Subsequences/Solution.go index 788028ebc6ea8..8f6fca57741bd 100644 --- a/solution/0400-0499/0491.Non-decreasing Subsequences/Solution.go +++ b/solution/0400-0499/0491.Non-decreasing Subsequences/Solution.go @@ -4,9 +4,7 @@ func findSubsequences(nums []int) [][]int { dfs = func(u, last int, t []int) { if u == len(nums) { if len(t) > 1 { - cp := make([]int, len(t)) - copy(cp, t) - ans = append(ans, cp) + ans = append(ans, slices.Clone(t)) } return } diff --git a/solution/1200-1299/1206.Design Skiplist/images/1702370216-mKQcTt-1506_skiplist.gif b/solution/1200-1299/1206.Design Skiplist/images/1702370216-mKQcTt-1506_skiplist.gif new file mode 100644 index 0000000000000000000000000000000000000000..a129e1f94e7aba25d398b26018513ceb9e16a5a0 GIT binary patch literal 44777 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 e;*F}q=QN$^AY7j4P@c#g$O7&g< literal 0 HcmV?d00001 diff --git a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README.md b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README.md index 9a0bb13a1819d..72ca77a5b9a5e 100644 --- a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README.md +++ b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README.md @@ -280,15 +280,13 @@ func buildWall(height int, width int, bricks []int) int { mod := int(1e9) + 7 res := [][]int{} t := []int{} - var dfs func(v int) + var dfs func(int) dfs = func(v int) { if v > width { return } if v == width { - cp := make([]int, len(t)) - copy(cp, t) - res = append(res, cp) + res = append(res, slices.Clone(t)) return } for _, x := range bricks { diff --git a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README_EN.md b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README_EN.md index a31b90910ac96..5b4e3ca00feb2 100644 --- a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README_EN.md +++ b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/README_EN.md @@ -261,15 +261,13 @@ func buildWall(height int, width int, bricks []int) int { mod := int(1e9) + 7 res := [][]int{} t := []int{} - var dfs func(v int) + var dfs func(int) dfs = func(v int) { if v > width { return } if v == width { - cp := make([]int, len(t)) - copy(cp, t) - res = append(res, cp) + res = append(res, slices.Clone(t)) return } for _, x := range bricks { diff --git a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/Solution.go b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/Solution.go index 9794ef8291fcf..dc41a5717e304 100644 --- a/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/Solution.go +++ b/solution/2100-2199/2184.Number of Ways to Build Sturdy Brick Wall/Solution.go @@ -2,15 +2,13 @@ func buildWall(height int, width int, bricks []int) int { mod := int(1e9) + 7 res := [][]int{} t := []int{} - var dfs func(v int) + var dfs func(int) dfs = func(v int) { if v > width { return } if v == width { - cp := make([]int, len(t)) - copy(cp, t) - res = append(res, cp) + res = append(res, slices.Clone(t)) return } for _, x := range bricks {