zoukankan      html  css  js  c++  java
  • 52.下一个排列

     

    52-下一个排列

    给定一个整数数组来表示排列,找出其之后的一个排列。

    注意事项

    排列中可能包含重复的整数

    样例

    给出排列[1,3,2,3],其下一个排列是[1,3,3,2]
    给出排列[4,3,2,1],其下一个排列是[1,2,3,4]

    标签

    排列 LintCode 版权所有

    思路

    从后往前找,找到第一对(i,j),使得 nums[i] < num[j] ,然后将两者交换后,后面部分排序即可。

    code

    class Solution {
    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
            int size = nums.size(), i = 0, j = 0;
            if(size == 0) {
                return vector<int> ();
            }
    
            for(i=size-1; i>=0; i--)  {
                for(j=size-1; j>i; j--) {
                    if(nums[i]<nums[j])  {
                        swap(nums[i],nums[j]);
                        sort(nums.begin()+i+1,nums.end());
                        return nums;  
                    }
                }
            }
            sort(nums.begin(),nums.end());
            return nums;  
        }
    };
  • 相关阅读:
    css问题
    前端性能优化整理
    算法之排序
    浅谈webpack优化
    js设计模式
    事件模型
    浏览器缓存
    ucGUI 12864 从打点起
    ucGUI例程收藏
    Qt 自动搜索串口号列表
  • 原文地址:https://www.cnblogs.com/kanekiken/p/8024769.html
Copyright © 2011-2022 走看看