不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

Leetcode-78-subsets | 子集

题目链接

解题思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//复制数组
func copySlice(src []int) []int {
temp := []int{}
for _, i := range src {
temp = append(temp, i)
}
return temp
}

func subsets(nums []int) [][]int {
result := [][]int{}
result = append(result, []int{}) //第一步 包含空集
for i := 0; i < len(nums); i++ {
length := len(result)
for j := 0; j < length; j++ {
//设定两个下标元素,从0开始遍历nums的值
//里层复制数组,接着append进去下标为j的值组成nums的一个子集,再append进result数组
result = append(result, append(copySlice(result[j]), nums[i]))
}
}
return result
}

注意

代码直接写成for j := 0; j < length; j++会超出内存限制,我在本地虚拟机上运行时,会卡爆电脑,原因正在找。

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!