LeetCode/go/subsets.go

30 lines
517 B
Go
Raw Normal View History

package main
func subsets(nums []int) [][]int {
var sets [][]int
var subsetsRec func(int)
var runningSet []int
subsetsRec = func(i int) {
if i == len(nums) {
toAppend := make([]int, len(runningSet))
copy(toAppend, runningSet)
sets = append(sets, toAppend)
return
}
// Skip the current element
subsetsRec(i + 1)
// Include the current element
runningSet = append(runningSet, nums[i])
subsetsRec(i + 1)
runningSet = runningSet[:len(runningSet)-1]
}
subsetsRec(0)
return sets
}