• [LeetCode] Next Permutation


    Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

    If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

    The replacement must be in-place, do not allocate extra memory.

    Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column. 1,2,31,3,2 3,2,11,2,3 1,1,51,5,1

    class Solution {
    public:
        void nextPermutation(vector<int> &num) {
            vector<int>::iterator iter = (num.end()-1);
            while(iter != num.begin() && *iter <= *(iter-1)){
                iter--;
            }
            if(iter == num.begin())
                sort(num.begin(),num.end());
            else{
                sort(iter,num.end());
                vector<int>::iterator iter0;
                for(iter0 = iter;iter0 != num.end();iter0++){
                   if(*iter0 > *(iter-1))
                       break;
                }
                swap(*iter0,*(iter-1));
            }
            
            
        }//end func
    };
  • 相关阅读:
    最短路问题之Dijkstra算法
    最短路问题之Bellman-ford算法
    最小生成树之Kruskal(克鲁斯卡尔)算法
    二分图问题
    七桥问题与欧拉道路
    拓扑排序
    八连通块
    四连通检测
    USACO19DEC题解
    1206 雅礼集训D2题解
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3935902.html
Copyright © 2020-2023  润新知