给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
这道题目是有一点陷阱的意思
实际上一个数组长度为n,
那么这个数组的子集就有2的n次方个
所以可以用位运算来解决,
一共是n位,
每一位代表的是一个数组中的对应的一个元素,
然后能得出一个数,
把这些所有的数组合起来 就是答案了
class Solution {
func subsets(_ nums: [Int]) -> [[Int]] {
let count = 1 << nums.count
var res = [[Int]].init()
for n in 0..<count {
var index = 0
var temp = n
var tempArray = [Int].init()
while (temp >> index) > 0 {
if ( temp >> index ) & 0b01 == 1 {
tempArray.append(nums[index])
}
index = index + 1
}
res.append(tempArray)
}
return res
}
}












网友评论