程式語言 - LeetCode - C++ - 31. Next Permutation



參考資訊:
https://algo.monster/liteproblems/31
https://www.cnblogs.com/grandyang/p/4428207.html

題目:


解答:

class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int size = nums.size();
        int p = size - 2;

        for (p = size - 2; p >= 0; --p) {
            if (nums[p + 1] > nums[p]) {
                break;
            }
        }

        if (p >= 0) {
            for (int i = size - 1; i > p; --i) {
                if (nums[i] > nums[p]) {
                    swap(nums[p], nums[i]);
                    break;
                }
            }
        }

        reverse(nums.begin() + p + 1, nums.end());
    }
};