• LeetCode OJ--Next Permutation *


    求一个排列的下一个排列。

    1,2,3 → 1,3,2
    3,2,1 → 1,2,3
    1,1,5 → 1,5,1

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
     
    class Solution{
    public:
        void nextPermutation(vector<int> &num) {
            if(num.size() == 0)
                return;
    
            const vector<int>::reverse_iterator rfirst= num.rbegin();
            const vector<int>::reverse_iterator rend = num.rend();
    
            auto pivot = next(rfirst);
            while(pivot != rend && *pivot >= *prev(pivot))
            {
                ++pivot;
            }
            
            if(pivot == rend)
            {
                reverse(rfirst,rend);
                return;
            }
            //find the first num great than pivot
            auto change = rfirst;
            while(*change<=*pivot)
                ++change;
    
            swap(*change,*pivot);
            reverse(rfirst,pivot);
            return;
        }
    };
    
    int main()
    {
        vector<int> num;
        num.push_back(1);
        num.push_back(1);
        num.push_back(5);
         
        Solution myS;
        myS.nextPermutation(num);
        return 0;
    }
  • 相关阅读:
    idea初始化配置
    常用网址
    linux改错了profile文件
    获得ip地址[转载]
    java 基本数据类型转换
    log4j配置概要
    HTTP状态码
    HTTP 的请求方式
    10、类和方法
    9、一切都是对象
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3784586.html
Copyright © 2020-2023  润新知