1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package main
func findSubsequences(nums []int) [][]int { var result [][]int var backtrack func(int, []int)
backtrack = func(start int, path []int) { if len(path) >= 2 { tmp := make([]int, len(path)) copy(tmp, path) result = append(result, tmp) }
used := make(map[int]bool) for i := start; i < len(nums); i++ { if used[nums[i]] || (len(path) > 0 && nums[i] < path[len(path)-1]) { continue } used[nums[i]] = true backtrack(i+1, append(path, nums[i])) } }
backtrack(0, []int{}) return result }
|