Merge pull request #5 from imageslr/patch-1

78 题新增位运算的解法
This commit is contained in:
halfrost
2019-12-27 14:37:03 +08:00
committed by GitHub

View File

@@ -41,3 +41,24 @@ func subsets1(nums []int) [][]int {
}
return res
}
// 解法三:位运算的方法
func subsets2(nums []int) [][]int {
if len(nums) == 0 {
return nil
}
res := [][]int{}
sum := 1 << uint(len(nums))
for i := 0; i < sum; i++ {
stack := []int{}
tmp := i // i 从 000...000 到 111...111
for j := len(nums) - 1; j >= 0; j-- { // 遍历 i 的每一位
if tmp & 1 == 1 {
stack = append([]int{nums[j]}, stack...)
}
tmp >>= 1
}
res = append(res, stack)
}
return res
}