首页
/
每日頭條
/
生活
/
算法的經典例題
算法的經典例題
更新时间:2026-02-27 12:58:51

算法的經典例題?給定一組不含重複元素的整數數組 nums,返回該數組所有可能的子集(幂集),下面我們就來聊聊關于算法的經典例題?接下來我們就一起去了解一下吧!

算法的經典例題(每天一道算法題)1

算法的經典例題

先來看下題目

給定一組不含重複元素的整數數組 nums,返回該數組所有可能的子集(幂集)。

說明:解集不能包含重複的子集。

示例:

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

輸出:

[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]

思考過程

這道題是一道典型的考驗遞歸算法的題目,根據題目可以想到,[1,2,3]的子集是[1,2]裡面所有的子集和[1,2]裡面所有子集和3的組合加上[3]。

解題

var subsets = function(nums) { // 長度為1時結束遞歸 if (nums.length === 1) { return [[], [nums[0]]] } // 如果初始的長度就為0,則直接返回[[]] if (nums.length === 0) { return [[]] } // 取出最後一個數 const nowValue = nums.pop() // 剩下的數字做遞歸,找出剩下數字的所有子集 const childSubs = subsets(nums) // 對所有子集的長度賦值,因為這裡會在原數組上做修改,所以先記錄了原數組的長度 const subsLength = childSubs.length // 循環遍曆所有子集 for(let i = 0; i < subsLength; i ) { // 插入當前數和所有子集組合生成的新的子集 childSubs.push([...childSubs[i], nowValue]) } // 返回結果 return childSubs };

時間複雜度 O(N*2^N),生成所有子集,并複制到輸出結果中。

空間複雜度 O(N*2^N),這是子集的數量。

對于給定的任意元素,它在子集中有兩種情況,存在或者不存在(對應二進制中的 0 和 1)。因此,NN 個數字共有 2^N2N 個子集。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
maya入門教程第13集
maya入門教程第13集
maya從基礎入門到高級應用、第一集基礎介紹maya共55集,講解系統實用性強,
2026-02-27
五個兄弟姐妹的真實生活
五個兄弟姐妹的真實生活
今天看了電影《我的姐姐》,個人認為電影拍得非常好,非常感人,看後感慨萬千,想馬上寫篇文章,又不知從何處下筆,還是從我媽媽的親身經曆說起吧。——題記《我的姐姐》是由殷若昕執導,遊曉穎編劇,張子楓領銜主演,肖央特别主演,朱媛媛、段博文、梁靖康主...
2026-02-27
豬豬俠·積木世界的童話故事劇情
豬豬俠·積木世界的童話故事劇情
豬豬俠·積木世界的童話故事劇情?劇情簡介:在我們可愛的豬豬俠GGBond還沒有出生之前,是他爺爺EEBond的輝煌年代,就連鼎鼎大名的阿托士和迷糊老師都是EEBond的學生,下面我們就來說一說關于豬豬俠·積木世界的童話故事劇情?我們一起去了...
2026-02-27
四川話水溝溝怎麼說
四川話水溝溝怎麼說
要點get“凼凼”,是有水一方,靜靜躺在坑裡。跟我讀凼凼【dàngdang】詞釋義“凼凼”,就是水坑。來一張圖,直觀感受下。雖然“凼凼”是水坑的泛指,但四川人常說的“凼凼”,多指下雨後有積水的窪地。四川氣候濕潤,夏季多雨,從前路不好的時候,...
2026-02-27
新概念英語學會了有用嗎
新概念英語學會了有用嗎
說結論:學習《新概念英語》很有用。親身體驗,牆裂推薦學習《新概念英語》。但是這不是适合所有人的方法。尤其是想通過背誦新概念1∽4就實現英語自由的→日常勸退。學習新概念沒有捷徑可走,但是有方法!那就是:朗讀新概念→高質量的優質輸入,獲得語感。...
2026-02-27
Copyright 2023-2026 - www.tftnews.com All Rights Reserved