AcWing 51. 数字排列
原题链接
中等
作者:
Echo.O
,
2024-02-22 22:04:04
,
所有人可见
,
阅读 37
思路:
用一个二维vector数组
变量res记录结果,先通过sort
函数将源数字串升序排列并添加到res中,再通过循环使用next_permutation函数
,将源数字串按字典序升序并加入到res中,直至变成降序排列
要点:
1.sort()
函数:将容器数据升序排列
2.next_permutation()
函数:将当前数据变成下一字典序更大的序列;返回值为bool
类型,能找到则返回1,否则返回0并把序列变为升序排列
代码:
#include<algorithm>
class Solution {
public:
vector<vector<int>> permutation(vector<int>& nums) {
vector<vector<int>> res;
sort(nums.begin(),nums.end());
res.push_back(nums);
while(next_permutation(nums.begin(),nums.end()))
res.push_back(nums);
return res;
}
};