day-52 下一个排列

news2024/9/23 5:17:18

在这里插入图片描述
思路
从后向前遍历数组,把遍历过的元素加入一个有序链表,没变里一个元素判断链表中是否有元素大于当前遍历元素,如果有,把链表中大于当前遍历元素的元素集合中最小的那一个元素赋给当前元素,然后将链表中剩余元素依次赋值给当前遍历元素之后的元素

解题过程
如果输入数组已经是能组成最大的数,则数组升序排列再返回

Code

class Solution {
    public void nextPermutation(int[] nums) {
        int len=nums.length;
        List<Integer> list=new ArrayList<>();
        boolean flag=true;
        for(int i=len-1;i>=0;i--){
            list.add(nums[i]);
            Collections.sort(list);
            if(list.size()>0&&list.get(list.size()-1)>nums[i]){
                int id=list.size()-1;
                while(id>=0&&list.get(id)>nums[i]){
                    id--;
                }
                nums[i]=list.get(id+1);
                list.remove(id+1);
                for(int j=i+1;j<len;j++){
                    nums[j]=list.get(0);
                    list.remove(0);
                }
                flag=false;
           }
           if(!flag) break;
        }
        if(flag)Arrays.sort(nums);
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/next-permutation/solutions/2912238/xia-yi-ge-pai-lie-by-ashi-jian-chong-dan-4ewp/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2122317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建造者模式builder

此篇为学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/builder 能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象

JavaWeb【day14】--(SpingBoot原理)

SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇&#xff0c;主要偏向于底层原理。 我们今天的课程安…

2-2 opencv实战进阶系列 多边形识别

目录 一、不说废话&#xff0c;先上现象 二、前言 三、思路讲解 step1&#xff1a;用阈值编辑器对图像进行处理。 step2&#xff1a;应用阈值进行二值化 step3&#xff1a;轮廓查找 step4&#xff1a; 显示文字 四、完整代码贴出 五、现象展示 六、结语 一、不说废话&…

在单向链表中找环

在单向链表中找环也是有多种办法&#xff0c;不过快慢双指针方法是其中最为简洁的方法之一&#xff0c;接下来介绍这种方法。 首先两个指针都指向链表的头部&#xff0c;令一个指针一次走一步&#xff0c;另一个指针一次走两步&#xff0c;如果它们相遇了&#xff0c;证明有环…

数据结构(7.2_1)——顺序查找

顺序查找&#xff0c;又叫"线性查找"&#xff0c;通常用于线性表&#xff08;或者顺序表和链表&#xff09;。 算法思想&#xff1a;从头到尾全部查找出来&#xff08;或者反过来也OK&#xff09; 顺序查找的实现 typedef struct {//查找表的数据结构(顺序表)Elem…

再遇“类和对象”

一、类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不…

visio修改默认字体、颜色、形状格式、连接线格式

设计中取消勾选“将主题应用于新建的形状” 在开发工具中打开绘图资源管理器&#xff0c;并分别修改纯文本、连接线、主题的样式

文本转化为声音

在许多场景下需要将文本转化为MP3格式&#xff0c;本文将实现文本转化为声音&#xff0c;并且将声音保存为MP3格式。本文一朱自清的《春》为例&#xff0c;要实现阅读《春》并且转化为mp3格式的音频文件。 1 导入包 import pyttsx3 from docx import Document def read_word_…

ubuntu内核升级后的问题修复

文章目录 需求当前环境禁止内核更新安装内核修复/usr/include/dlocate 测试 需求 升级后的常见问题 驱动程序不兼容: 新内核版本可能导致某些硬件驱动程序不再兼容&#xff0c;尤其是专有驱动程序或第三方驱动程序。启动问题:内核更新可能导致启动问题&#xff0c;例如无法启动…

《创新电力巡检,机器人铸就安全高效未来》

近年来&#xff0c;我国电力建设投资额持续波动增长&#xff0c;至2023年底&#xff0c;全国电力工程投资总额高达14950亿元&#xff0c;同比增长22%。其中&#xff0c;电源工程建设和电网工程建设投资均达到新的高度。在这一背景下&#xff0c;电力行业对巡检工作的要求也日益…

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后&#xff0c;苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本&#xff0c;iOS 18 RC 的内部版本号为22A3354&#xff0c;本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中&#xff0c;苹果给我们带来了 Apple Intelligence&#xff0c;这…

springboot高校兼职平台-计算机毕业设计源码65602

摘要 基于SpringBoot框架的高校兼职平台专注于为普通用户提供便捷的兼职信息服务。该平台包括普通用户功能、系统内容浏览、通知公告查看与论坛交流互动、兼职信息搜索与申请、个人中心管理和管理员权限管理等模块。利用SpringBoot框架实现了模块化开发和依赖注入&#xff0c;结…

驱动与应用的编译

无论是去驱动编译&#xff0c;还是应用编译&#xff0c;本质上都是用gcc这个工具&#xff0c;后面跟不同的参数来完成 驱动编译 放入内核编译 obj-y $(TARGET_SDK).o&#xff0c;就会直接将驱动编译成.o。供内核链接的时候&#xff0c;链接进整个内核镜像&#xff1b; obj-m…

Flutter自定义Icon的简易使用(两种)

方式一&#xff1a;利用第三方库&#xff08;建议&#xff09; 1、在阿里图标库(iconfont-阿里巴巴矢量图标库)上&#xff0c;加载购物车后&#xff0c;点击“下载素材”svg。 2、把下载的图片放入asstes目录下。​​​​​​​ 3、修改yaml配置文件&#xff0c;设置Icon图标所…

动态单窗口IP代理:提升网络操作的灵活性和安全性

互联网时代&#xff0c;各种网络工具层出不穷&#xff0c;而动态单窗口IP代理无疑成为了近年来的热门话题。今天&#xff0c;我们就来聊聊这个神奇的工具&#xff0c;看看它到底有什么独特之处。 什么是动态单窗口IP代理&#xff1f; 动态单窗口IP代理&#xff0c;顾名思义&a…

基于CogVideoX-2B的国产Sora文字一键生成视频

CogVideoX-2B是由THUDM团队开发的先进视频生成模型,利用最前沿的变压器技术,实现从文本到视频的高质量转换。无论是研究人员还是开发者,CogVideoX-2B都提供了一个强大的开源工具,用于视频合成和AI驱动的媒体创作。 本教程将详细介绍如何使用CogVideoX-2B,包括环境设置、模…

simd vs simt

GPU架构及运行机制学习笔记_gpu结构-CSDN博客 SIMD (Single Instruction, Multiple Data) 和 SIMT (Single Instruction, Multiple Threads) SIMD 架构是指在同一时间内对多个数据执行相同的操作&#xff0c;适用于向量化运算。例如&#xff0c;对于一个包含多个元素的数组&am…

震惊!立体连接:开启商业新模式的流量密码

摘要&#xff1a;本文深度揭秘在当今商业环境中立体连接的重大意义&#xff0c;揭示最佳匹配线下、社群和网络三度空间来实现认知、交易、关系三大功能的神奇之处。通过剖析开源链动 2 1 模式、AI 智能名片、S2B2C 商城小程序等元素在三度空间的运用&#xff0c;阐述如何达成最…

区块链学习笔记2--区块链技术的形成 以太坊

分布式数据存储&#xff1a; 在每个参与者电脑上备份 账本实时同步和对账 点对点通信 共识机制 加密算法&#xff1a; 对用户个人信息的加密 转账过程中的签名授权 账本一致性校验 挖矿算法的目标hash 区块链2.0技术 以太坊 比特币的出现让经济贸易变得简单&#xff0c;而比特…

【数据结构-二维前缀和】力扣221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内&#xff0c;找到只包含 ‘1’ 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”…