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