mirror of
https://gitlab.com/mfocko/LeetCode.git
synced 2024-11-10 00:09:06 +01:00
29 lines
520 B
Go
29 lines
520 B
Go
package subsets
|
|
|
|
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
|
|
}
|