78. 子集-leetcode

給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。

說明:解集不能包含重復(fù)的子集。

示例:

輸入: nums = [1,2,3]
輸出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

這道題目是有一點(diǎn)陷阱的意思

實(shí)際上一個(gè)數(shù)組長度為n,

那么這個(gè)數(shù)組的子集就有2的n次方個(gè)

所以可以用位運(yùn)算來解決,

一共是n位,

每一位代表的是一個(gè)數(shù)組中的對(duì)應(yīng)的一個(gè)元素,

然后能得出一個(gè)數(shù),

把這些所有的數(shù)組合起來 就是答案了

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
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 算法思想貪心思想雙指針排序快速選擇堆排序桶排序荷蘭國旗問題二分查找搜索BFSDFSBacktracking分治動(dòng)態(tài)...
    第六象限閱讀 4,902評(píng)論 0 0
  • 排序算法幾種分類方式: 1,穩(wěn)定排序和不穩(wěn)定排序 如果a==b, 當(dāng)排序之前a在b的前面,排序后,a仍然在b...
    fly_ever閱讀 497評(píng)論 0 0
  • <center>#1 Two Sum</center> link Description:Given an arr...
    鐺鐺鐺clark閱讀 2,354評(píng)論 0 3
  • 動(dòng)態(tài)規(guī)劃 111. 爬樓梯思路類似斐波那契數(shù)列注意考慮第 0 階的特殊情況 272. 爬樓梯 II思路類似上題,只...
    6默默Welsh閱讀 2,603評(píng)論 0 1
  • 昨晚,我簽了一套房,10萬的定金?;丶液螅徽矶际吡耍?戀愛前,有地方住就可以,可是戀愛、結(jié)婚后,特想有套自己...
    每天的檸檬閱讀 278評(píng)論 0 1

友情鏈接更多精彩內(nèi)容