1. 程式人生 > 實用技巧 >Leetcode刷題 - 排列組合類

Leetcode刷題 - 排列組合類

78. 子集 - Subsets

 1 class Solution {
 2 public:
 3     vector<vector<int>> subsets(vector<int>& nums) {
 4         vector<vector<int>> output;
 5         output.push_back({});
 6         
 7         for (int i = 0; i < nums.size(); i++){
 8             int size = output.size(); 
 9
for (int j = 0; j < size; j++){ 10 auto sub = output[j]; 11 sub.push_back(nums[i]); 12 output.push_back(sub); 13 } 14 } 15 return output; 16 } 17 };

90. 子集 - Subsets II

 1 class Solution {
 2 public:
 3
vector<vector<int>> subsetsWithDup(vector<int>& nums) { 4 sort(nums.begin(), nums.end()); 5 vector<vector<int>> output; 6 output.push_back({}); 7 8 for (int i = 0; i < nums.size(); i++){ 9 int size = output.size();
10 for (int j = 0; j < size; j++){ 11 auto temp = output[j]; 12 temp.push_back(nums[i]); 13 // handle duplicate cases 14 bool found = false; 15 // find whether there is a duplicate case 16 for (int k = 0; k < output.size(); k ++){ 17 if (temp == output[k]){ 18 found = true; 19 break; 20 } 21 } 22 23 if(!found) 24 output.push_back(temp); 25 } 26 } 27 28 return output; 29 } 30 };