LeetCode-31 Next Permutation

本文介绍了一个算法问题——寻找比给定整型数组按排列顺序大的下一个序列。通过非递归方式实现,采用从后向前查找并交换元素的方法。当当前数组为最大序列时,输出最小序列。

题目:给定一个整型数组,找出比该数组按排列顺序大的下一个序列,如果该数组为最大序列,则输出最小序列

思路:字符串全排列问题,可以使用全排列非递归实现的方法,即从后向前用大数交换小数。

class Solution {
public:
    void nextPermutation(vector<int> &num) {
        int length=num.size();
        if(length<=1)return;
        int temp=length-1;
        
        while(temp>0){
            if(num[temp-1]<num[temp]){
                break;
            }
            temp--;
        }
        if(temp==0){
            reverse(num.begin(), num.end());
            return;
        }
        temp--;

       int temp_1=length-1;
       while(temp_1>temp){
           if(num[temp_1]>num[temp]){
               int i=num[temp_1];
               num[temp_1]=num[temp];
               num[temp]=i;
               break;
           }
           temp_1--;
       }
        reverse(num.begin()+temp+1, num.end());
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值