LeetCode #78 subsets(子集)python

Question

Given a set of distinct integers, nums, return all possible subsets (the power set).(不同的整數,返回所有可能的子集,離散數學中叫power set,個數是2的len(list)的次方)

Note: The solution set must not contain duplicate subsets.(不重復的子集)

Example:

#2的三次方8個子集
Input: nums = [1,2,3]
Output:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

Thought(思路)

  1. Backtracking(the red arrows 紅色箭頭就是backtracking), DFS(廣度優先)
  2. 首先,數組要排序,在第n層,加入一個元素進入n+1層,刪除剛剛加入的元素,加入第n層的第二個元素......


    thought

Code

class Solution:
    def subsets(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        self.res = []
        def dfs(nums,temp,i):
            self.res.append(temp[:])
            for i in range(i,len(nums)):
                temp.append(nums[i])
                dfs(nums,temp,i+1)
                temp.pop()
                
        dfs(nums,[],0)
        return self.res

Complexity

Time complexity: O(N * 2^n)
Space complexity: O(2^n)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,766評論 0 33
  • 一晃又一周過去了,這時間簡直不要過的太快了。回想過去這一周,感覺自己終于把大cass敲定的差不多了。首先感謝...
    迭代鳳兒閱讀 221評論 3 5
  • 為人父母,平時的一言一行都無形中給孩子傳遞著自己的生活觀,價值觀。 這些潛移莫化的影響,最終決定了孩子的生活觀,價...
    __702b閱讀 207評論 0 0
  • 1 小朋友不小心感冒了,今天帶去看醫生。 在輸液室里,看到一個媽媽,一手抱著燒得滿臉通紅的孩子在輸液,一手拿著不時...
    e035443af3e2閱讀 592評論 0 2