|
@@ -5,7 +5,7 @@ import (
|
|
|
"sort"
|
|
|
)
|
|
|
|
|
|
-func combine(nums []int, k int) (res [][]int) {
|
|
|
+func combineWithDup(nums []int, k int) (res [][]int) {
|
|
|
n := len(nums)
|
|
|
if k == 0 || k == n {
|
|
|
row := make([]int, k)
|
|
@@ -14,11 +14,11 @@ func combine(nums []int, k int) (res [][]int) {
|
|
|
}
|
|
|
return append(res, row)
|
|
|
}
|
|
|
- for _, row := range combine(nums[:n-1], k-1) {
|
|
|
+ for _, row := range combineWithDup(nums[:n-1], k-1) {
|
|
|
row = append(row, nums[n-1])
|
|
|
res = append(res, row)
|
|
|
}
|
|
|
- res = append(res, combine(nums[:n-1], k)...)
|
|
|
+ res = append(res, combineWithDup(nums[:n-1], k)...)
|
|
|
return res
|
|
|
}
|
|
|
|
|
@@ -26,12 +26,12 @@ func subsetsWithDup(nums []int) [][]int {
|
|
|
sort.Ints(nums)
|
|
|
res := [][]int{}
|
|
|
for i := 0; i <= len(nums); i++ {
|
|
|
- res = append(res, combine(nums, i)...)
|
|
|
+ res = append(res, combineWithDup(nums, i)...)
|
|
|
}
|
|
|
return res
|
|
|
}
|
|
|
|
|
|
func main() {
|
|
|
- arr := []int{1, 3, 1}
|
|
|
+ arr := []int{1, 3, 1, 3}
|
|
|
fmt.Println(subsetsWithDup(arr))
|
|
|
}
|