https://www.cnblogs.com/grandyang/p/4428207.html
从数组末尾向前找数字,找到第一个不属于递增序列的数字i,然后在递增序列中找到第一个比i大的数值进行交换,如果没有就拿末尾值与i交换。最后将i+1到末尾的数值进行反向。
注意:1.如果整个数组都没有 nums[i+1] > nums[i],你就需要把整个数组reverse
2.使用了reverse函数
]>class Solution { public: void nextPermutation(vector<int>& nums) { int length = nums.size(); if(length <= 0) return; int j; for(int i = length - 2;i >= 0;i--){ if(nums[i+1] > nums[i]){ for(j = length - 1;j > i;j--){ if(nums[j] > nums[i]) break; } swap(nums[j],nums[i]); reverse(nums.begin() + i + 1,nums.end()); return; } } reverse(nums.begin(),nums.end()); } };