leetcode: Next Permutation

来源:互联网 发布:删除cadbak文件软件 编辑:程序博客网 时间:2024/06/05 19:28

Given a list of integers, which denote a permutation.

Find the next permutation in ascending order.

 Notice

The list may contains duplicate integers.

Example

For [1,3,2,3], the next permutation is [1,3,3,2]

For [4,3,2,1], the next permutation is [1,2,3,4]


class Solution {    private:    void swap(vector<int> &num, int left, int right) {                int tmp = num[left];        num[left] = num[right];        num[right] = tmp;    }    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        vector<int> retVtr = nums;                int pivotIdx = retVtr.size()-1;                for (; pivotIdx>0; pivotIdx--)        {            if (retVtr[pivotIdx-1] < retVtr[pivotIdx])                break;        }                if (pivotIdx > 0)        {            int left = pivotIdx-1;            int right = pivotIdx;                        for (int i=pivotIdx; i<retVtr.size(); i++)            {                if (retVtr[i] > retVtr[left])                {                    right = i;                }            }                        swap(retVtr, left, right);        }        sort(retVtr.begin()+pivotIdx, retVtr.end());                return retVtr;    }};




0 0
原创粉丝点击