31. 下一个排列(排序)

蒲公英的约定356 2022-02-19 21:47:33

class Solution {
    public void nextPermutation(int[] nums) {
        //从后往前
        int i=0;
        for(i=nums.length-1 ;i>0;i--){
            //判断有无下一个大的序列
            if(nums[i]>nums[i-1]){
                //将i-nums.length排序,查找大于nums[i-1]且差值最小的数与nums[i-1]进行交换
                //从小到大排了之后 选一个比i-1大的去交换 形成下一个排列
                Arrays.sort(nums,i,nums.length);
                for(int j=i;j<nums.length;j++){
                    if(nums[j]>nums[i-1]){
                        int temp = nums[i-1];
                        nums[i-1] = nums[j];
                        nums[j] = temp;
                        return;
                    }
                }
            }
            
        }
        if(i==0) Arrays.sort(nums);

    }
}

 

...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,634

社区成员

发帖
与我相关
我的任务
社区描述
欢迎大家来到抱团内卷学习社区,在这里大家可以分享自己的学习笔记,求职心得,一起记录彼此的成长历程。社区群号:94108843,WX公众号:【兴趣使然的草帽路飞】
社区管理员
  • 路  飞
  • 一百个Chocolate
  • 灰小猿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

最怕你一生碌碌无为,还安慰自己平凡可贵!

努力提高自己的知识储备,助力每一位冲刺大厂的小伙伴!

祝大家前程似锦,offer连连!

注意:每个月活跃积分最高的小伙伴,可以获得社区管理员权限哦!

试试用AI创作助手写篇文章吧