输入一组数字(可能包含重复数字),输出其所有的排列方式。
数据范围
输入数组长度 [0,6]。
样例
输入:[1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
class Solution {
public:
vector<vector<int>> permutation(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> res;
do res.push_back(nums);
while(next_permutation(nums.begin(),nums.end()));
return res;
}
};
next_permutation函数的功能是将数组中选定范围的数按照字典序进行全排列.
他可以求出比一个排列大的下一个排列
![](https://i-blog.csdnimg.cn/blog_migrate/6ba15b5f872cdcea9ed921afa0a8cad1.png)