go: add «78. Subsets»
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
928354c370
commit
370c61deb6
1 changed files with 29 additions and 0 deletions
29
go/subsets.go
Normal file
29
go/subsets.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
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
|
||||||
|
}
|
Loading…
Reference in a new issue