go: add «78. Subsets»

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2024-05-21 11:38:23 +02:00
parent 928354c370
commit 370c61deb6
Signed by: mfocko
GPG key ID: 7C47D46246790496

29
go/subsets.go Normal file
View 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
}