zoukankan      html  css  js  c++  java
  • 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,3 → 1,3,2
    3,2,1 → 1,2,3
    1,1,5 → 1,5,1

    Runtime: 12ms. 

     1 class Solution {
     2 public:
     3     void nextPermutation(vector<int>& nums) {
     4         if(nums.empty()) return;
     5 
     6         int n = nums.size();
     7         
     8         // find the first decreasing number from right to left
     9         int firstDecreaseIndex = n - 1;
    10         for(int i = n - 2; i >= 0; i--) {
    11             if(nums[i] < nums[i + 1]) {
    12                 firstDecreaseIndex = i;
    13                 break;
    14             }
    15         }
    16         
    17         if(firstDecreaseIndex == n - 1) {
    18             reverse(nums.begin(), nums.end());
    19             return;
    20         }
    21         
    22         // find the first number which is larger than nums[firstDecreaseIndex]
    23         int firstLargerIndex;
    24         for(int i = n - 1; i >= 0; i--) {
    25             if(nums[i] > nums[firstDecreaseIndex]) {
    26                 firstLargerIndex = i;
    27                 break;
    28             }
    29         }
    30         
    31         swap(nums[firstDecreaseIndex], nums[firstLargerIndex]);
    32         
    33         // reverse numbers between firstDecreaseIndex + 1 and n - 1
    34         for(int i = firstDecreaseIndex + 1, j = n - 1; i < j; i++, j--) {
    35             swap(nums[i], nums[j]);
    36         }
    37     }
    38 };
  • 相关阅读:
    docker 部署 nginx+php+mysql
    jquery-weui picker组件实现只选择年月
    ios端微信浏览器禁止上下滑动
    mysql 统计连续天数
    mysql 省市数据
    php 获取毫秒时间戳
    create-react-app 打包后文件路径问题
    php nginx 获取header信息
    ubuntu或者debian安装php-gd扩展错误
    php xml字符串转数组
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/5755106.html
Copyright © 2011-2022 走看看