class Solution {
public:
void nextPermutation(vector<int>& nums) {
int pos = 0;
int large_min = 101;
int large_min_index = 0;
if(nums.size()<2) return;
for(int i=nums.size()-1; i>0; i--) {
//从后往前找 找到逆序
if(nums[i] > nums[i-1]){
pos = i;
break;
}
}
if(pos == 0) {
for(int i=0; i<nums.size()/2; i++) {
swap(nums[i],nums[nums.size()-i-1]);
}
}else {
for(int i=pos; i<nums.size(); i++) {
if(nums[i]>nums[pos-1] && nums[i]<large_min) {
large_min = nums[i];
large_min_index = i;
}
}
swap(nums[pos-1],nums[large_min_index]);
sort(nums.begin()+pos,nums.end());
}
}
};
LeetCode下一个排序
原创
©著作权归作者所有:来自51CTO博客作者松月dd的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:LeetCode颜色分类
下一篇:二叉树前序遍历
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【LeetCode】2192. 有向无环图中一个节点的所有祖先
【LeetCode】2192. 有向无环图中一个节点的所有祖先
leetcode 数据结构与算法 C++ -
LeetCode 31 下一个排列
就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排
leetcode 算法 数组 字典序 #include -
LeetCode_下一个排列
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不
leetcode 算法 c语言 升序 扫描法 -
LeetCode---31. 下一个排列
下一个排列的定义是:给定数字序列的字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。
leetcode 算法 职场和发展 升序 示例代码 -
【leetCode】31. 下一个排列
一、题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排
算法 leetcode 数据结构 数组 时间复杂度