今天是学雷锋日,心怀善良,但不要没有底线
- 全排列 II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
示例 1:
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]
示例 2:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
提示:
1 <= nums.length <= 8
-10 <= nums[i] <= 10
class Solution {
public:
vector<vector<int>> permuteUnique(vector<int>& nums) {
vector<vector<int>> ret;
sort(begin(nums), end(nums));
do {
ret.emplace_back(nums);
} while (next_permutation(begin(nums), end(nums)));
return ret;
}
};
看出这个代码的人对c++的使用是出神入化了,果然是大佬。
题目意思是组合全排列去重方法数
- 把集合元素排序
- do while循环就不说 了
- next_permutation()函数功能是输出所有比当前排列大的排列,顺序是从小到大。
- 而prev_permutation()函数功能是输出所有比当前排列小的排列,顺序是从大到小。
- 用惯了真的很丝滑
今日古诗
后宫词
白居易 〔唐代〕
泪湿罗巾梦不成,夜深前殿按歌声。
红颜未老恩先断,斜倚薰笼坐到明。