diff --git a/problems/0046.全排列.md b/problems/0046.全排列.md index 06367851..30c3374b 100644 --- a/problems/0046.全排列.md +++ b/problems/0046.全排列.md @@ -244,31 +244,35 @@ func backtrack(nums,pathNums []int,used []bool){ } } +``` + Javascript: -```javascript +```js +/** + * @param {number[]} nums + * @return {number[][]} + */ var permute = function(nums) { - let result = [] - let path = [] - function backtracing(used) { - if(path.length === nums.length) { - result.push(path.slice(0)) - return + const res = [], path = []; + backtracking(nums, nums.length, []); + return res; + + function backtracking(n, k, used) { + if(path.length === k) { + res.push(Array.from(path)); + return; } - for(let i = 0; i < nums.length; i++) { - if(used[nums[i]]) { - continue - } - used[nums[i]] = true - path.push(nums[i]) - backtracing(used) - path.pop() - used[nums[i]] = false + for (let i = 0; i < k; i++ ) { + if(used[i]) continue; + path.push(n[i]); + used[i] = true; // 同支 + backtracking(n, k, used); + path.pop(); + used[i] = false; } } - backtracing([]) - return result }; ``` diff --git a/problems/0763.划分字母区间.md b/problems/0763.划分字母区间.md index 1e2fcc03..b36e00b7 100644 --- a/problems/0763.划分字母区间.md +++ b/problems/0763.划分字母区间.md @@ -128,6 +128,33 @@ class Solution: Go: +```go + +func partitionLabels(s string) []int { + var res []int; + var marks [26]int; + size, left, right := len(s), 0, 0; + for i := 0; i < size; i++ { + marks[s[i] - 'a'] = i; + } + for i := 0; i < size; i++ { + right = max(right, marks[s[i] - 'a']); + if i == right { + res = append(res, right - left + 1); + left = i + 1; + } + } + return res; +} + +func max(a, b int) int { + if a < b { + a = b; + } + return a; +} +``` + Javascript: ```Javascript var partitionLabels = function(s) {