数组-leetcode#31-下一个排列

class Solution {
public:
    void nextPermutation(vector& nums) {
        if(nums.empty()) return;
        int i=nums.size()-2;
        while(i>=0){
            if(nums[i]=0){
            int more_min = nums[i+1];
            int id = i+1;
            for(int j=i+2;jnums[i] && nums[j]

第一步,从后往前找,找到下一个比当前大的元素,i,如果i小于0,说明没找到,那么就是递减序列的,所以reverse就行了;如果找到了,现在还不能交换,需要看在i+1之后有没有元素,比i大,且比i+1小的,所以遍历,找到了,那么id和i交换,之后,对于i+1之后的序列进行排序。

你可能感兴趣的:(数组,leetcode)