LeetCode 90. 子集 II(回溯+剪枝)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 90. 子集 II(回溯+剪枝)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 1. 題目信息
- 2. 解題
- 2.1 循環(huán)
- 2.2 回溯
1. 題目信息
給定一個(gè)可能包含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。
說明:解集不能包含重復(fù)的子集。
示例:輸入: [1,2,2] 輸出: [[2],[1],[1,2,2],[2,2],[1,2],[] ]來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/subsets-ii
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
2. 解題
類似題目子集
2.1 循環(huán)
參考別人的,比較難想出來。
2.2 回溯
class Solution { public:vector<vector<int>> subsetsWithDup(vector<int>& nums) {sort(nums.begin(), nums.end());vector<int> sub;vector<vector<int>> ans;ans.push_back({});bt(nums,sub,ans,0);return ans;}void bt(vector<int>& nums,vector<int> sub, vector<vector<int>> &ans, int i){for(int idx = i; idx < nums.size(); ++idx){if(idx > i && nums[idx] == nums[idx-1])continue;sub.push_back(nums[idx]);ans.push_back(sub);bt(nums,sub,ans,idx+1);sub.pop_back();}} };總結(jié)
以上是生活随笔為你收集整理的LeetCode 90. 子集 II(回溯+剪枝)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串匹配算法(BM)
- 下一篇: LeetCode 221. 最大正方形(