leetcode-90-Subsets II
来源:互联网 发布:程序员简历怎么写 编辑:程序博客网 时间:2024/06/04 23:35
问题
题目:[leetcode-90]
思路
上一目的题目需要两个条件:
1.必须是升序
2.试探过的元素不能反复试探
3. 如果是相同的元素,同一个位置不能由多个相同元素试探。但是要注意,如果相同元素已经试探了别的位置,那么这个位置不可能由相同元素试探。即使元素相同。
代码
class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<int> arr; vector<vector<int>> ret; ret.push_back(arr); set<int> visited; dfs( arr, visited, nums, nums.size(), ret ); return ret; }private: void dfs(vector<int>& arr, set<int>& visited, vector<int>& nums, int n, vector<vector<int>>& ret ){ if( arr.size() == n ) return; else{ for(int i = 0; i < n; ++i){ if( visited.find(i) != visited.end() ) continue; int sz = arr.size(); bool flag = true; for( int k = 0; k < sz; ++k ){ if( arr[k] > nums[i] ){ flag = false; break; } } if(!flag) continue; flag = true; for(int j = 0; j < i; ++j){ if(nums[j] == nums[i] && visited.find(j) == visited.end() ){ flag = false; break; } } if(!flag) continue; arr.push_back( nums[i] ); visited.insert( i ); ret.push_back(arr); dfs( arr, visited, nums, n, ret ); arr.pop_back(); visited.erase(i); } } }};
阅读全文
0 0
- [leetcode 90] Subsets II
- [LeetCode 90]Subsets II
- leetcode || 90、Subsets II
- Leetcode #90 Subsets II
- LeetCode(90) Subsets II
- leetcode 90: Subsets II
- LeetCode 90:Subsets II
- ***LeetCode 90 Subsets ii
- 【leetcode】【90】Subsets II
- LeetCode 90 Subsets II
- leetcode 90 Subsets II
- leetcode(90):Subsets II
- Leetcode 90 Subsets II
- LeetCode 90 --- Subsets II
- leetcode-90-Subsets II
- [LeetCode 78] Subsets && [LeetCode 90] Subsets II
- Leetcode 78 Subsets + 90 Subsets II 子集
- 【LeetCode】 Subsets Subsets II
- js 错误监控
- STL中list学习笔记
- 身份证识别SDK-身份证识别api(移动端-服务器端)
- LINUX 进程控制
- Java基础11:Wrapper包装类
- leetcode-90-Subsets II
- 高通Android源码下载
- 关于dcim基于active Mq实现数据中心监控数据的接入
- vscode 常用功能 (20171028)
- Eclipse下Maven新建Web项目index.jsp报错完美解决(war包)
- JavaWeb 国际化
- Thinkphp volist 多重循环原样输出数组key值的使用总结
- js 面向对象编程 陷阱2
- Git之基本命令