热门搜索 :
考研考公
您的当前位置:首页正文

lintcode 下一个排列

来源:东饰资讯网

给定一个整数数组来表示排列,找出其之后的一个排列。
样例
给出排列[1,3,2,3],其下一个排列是[1,3,3,2]
给出排列[4,3,2,1],其下一个排列是[1,2,3,4]

道理和上一个排列完全一样,只是交换的条件相反:

class Solution {
public:
    /**
     * @param nums: An array of integers
     * @return: An array of integers that's next permuation
     */
    vector<int> nextPermutation(vector<int> &nums) {
        // write your code here
        for (int i = nums.size()-1;i >= 0;i--) {
            for (int j = nums.size()-1;j > i;j--) {
                if (nums[j] > nums[i]) {
                    swap(nums[j],nums[i]);
                    reverse(nums.begin()+i+1,nums.end());
                    return nums;
                }
            }
        }
        reverse(nums.begin(),nums.end());
        return nums;
    }
};
Top