mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2026-03-13 10:02:05 +08:00
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user