LeetCode---Permutations II
来源:互联网 发布:教学软件下载 编辑:程序博客网 时间:2024/06/06 18:57
题目大意:给出一个包含重复元素的数组,找出该数组所有可能的唯一排列。
算法思想:字典序法。
1.对数组排序,将初始序列放入结果中。
2.找出p=max{i|a[i]<a[i+1]}
3.找出q=max{j|a[j]>a[p]}
4.swap(a[p],a[q])
5.将a[p+1]之后的元素倒序。
6将生成的结果保存起来。
7.重复2~6.
代码如下:
class Solution {public:vector<vector<int> > permuteUnique(vector<int>& nums) {vector<vector<int> > res;if (nums.size() == 0) return res;sort(nums.begin(),nums.end());res.push_back(nums);while (1){int p = -1, q = -1;for(int i=nums.size()-2;i>=0;--i){ if (nums[i] < nums[i + 1]){p = i;break;}}if (p != -1){for (int j = nums.size() - 1; j>p; --j){if (nums[j] > nums[p]){q = j;break;}}swap(nums[p], nums[q]);int start = p + 1, end = nums.size() - 1;while (start < end){swap(nums[start], nums[end]);++start;--end;}res.push_back(nums);}elsebreak;}return res;}};
0 0
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- Leetcode: Permutations and Permutations II
- leetcode-permutations and permutations II
- Leetcode:Permutations与Permutations II
- LeetCode: Permutations II
- LeetCode Permutations II
- LeetCode: Permutations II
- [Leetcode] Permutations II
- [LeetCode] Permutations II
- [Leetcode] Permutations II
- leetcode Permutations II
- [LeetCode]Permutations II
- leetcode - Permutations II
- LeetCode-Permutations II
- [leetcode] Permutations II
- CSS3 Box-shadow
- pdf转png
- [Leetcode]Populating Next Right Pointers in Each Node
- 表单中有图文编辑器的内容,提交失败。
- Android Studio基础之生成Apk(六)-学习篇
- LeetCode---Permutations II
- linux dup,dup2,dup3 复制一个文件描述符
- OpenGL纹理贴图相关基本概念
- ASPxPopupControl 关闭刷新
- 同一个应用安装时的类型却不同
- iOS拨打电话功能的实现
- 点击空白处隐藏软键盘
- js中的cookie操作
- jQuery的选择器——可见性过滤选择器