Skip to content

Commit 478a592

Browse files
committed
add leetcode 46
1 parent 7f42680 commit 478a592

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package leetcode
2+
3+
var result [][]int
4+
5+
func permute(nums []int) [][]int {
6+
result = make([][]int, 0)
7+
pathNums := make([]int, 0)
8+
used := make([]bool, len(nums))
9+
backtrack(nums, pathNums, used)
10+
return result
11+
}
12+
13+
func backtrack(nums, pathNums []int, used []bool) {
14+
if len(nums) == len(pathNums) {
15+
tmp := make([]int, len(nums))
16+
copy(tmp, pathNums)
17+
result = append(result, tmp)
18+
return
19+
}
20+
21+
for i := 0; i < len(nums); i++ {
22+
if !used[i] {
23+
used[i] = true
24+
pathNums = append(pathNums, nums[i])
25+
backtrack(nums, pathNums, used)
26+
pathNums = pathNums[:len(pathNums)-1]
27+
used[i] = false
28+
}
29+
}
30+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package leetcode
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/assert"
7+
)
8+
9+
func TestPermute(t *testing.T) {
10+
assert.Equal(t, [][]int{
11+
{1, 2, 3},
12+
{1, 3, 2},
13+
{2, 1, 3},
14+
{2, 3, 1},
15+
{3, 1, 2},
16+
{3, 2, 1},
17+
}, permute([]int{1, 2, 3}))
18+
}

0 commit comments

Comments
 (0)