LeetCode 670 最大交换数

news2024/12/26 17:40:19

周一,非常冷,大风呼呼的,上班路都走不动。

好消息,马上要过年了。大风吹,天气好。

过年过年,回家过年~

学生时代的迷茫是不应该存在的,最好的时光应该尽情享受,而不应该自己给加层阴霾。时间会带来答案。

今天再刷一题。

题目:给一个整数,最多可以交换这个数字的任意两位一次,获得可以返回的最大值。

理解:

(1)如果num <= 10, 直接返回num就可以了

(2) num可以分为两截,

第一截是非递增的,即num[i] >= num[i + 1]
第二截是有增有减,没有规律的。只要有递增,就存在第二截
第一截的长度可能为0,第二截的长度也可能为0.

如果只有第一截,即第二截的长度为0,那么num直接返回就行。
如果只有第二截,即第一截的长度为0,那么直接找出num中最大的一位,和第一位交换就行。

所以我们的解决思路分为两步

(1)找出是否存在第二截,只要存在nus[i] < num[i + 1],就存在第二截。
如果存在,找出第二截的最大值MAX。如果不存在,直接返回。

(2)从头开始(包括第一截),找到第一个小于MAX的值,与MAX交换即可。

public int maximumSwap(int num) {
        if(num <= 10) {
            return num;
        }
        // 找出是否存在第二截,只有存在递增情况,则有第二截。
        char[] nums = String.valueOf(num).toCharArray();
        int i = 0;
        while (i < nums.length - 1 && nums[i] >= nums[i + 1]) {
            ++i;
        }
        // 非递增的,即nums只有第一截,直接返回
        if (i == nums.length - 1) {
            return num;
        }
        // 存在第二截,找到第二截的最大值MAX的下标j
        int j = i + 1;
        for (i = i + 1; i < nums.length; ++i) {
            if (nums[i] >= nums[j]) {
                j = i;
            }
        }
        // 找到第一个小于MAX的值num[i]的下标i
        i = 0;
        while (nums[i] >= nums[j]) {
            ++i;
        }
        // 交换
        char temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
        // 返回
        return Integer.valueOf(String.valueOf(nums));
    }

结果
在这里插入图片描述

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

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

相关文章

【zlm】针对单个设备的码率的设置

目录 代码修改 实验数据一 实验数据二 同时拉一路视频后 修改记录 使用方法 代码修改 要被子类引用 &#xff0c;所以放在protected 不能放private 下面的结论&#xff0c;可以在下面的实验数据里引用。“同时拉一路视频后” 实验数据一 https://10.60.3.45:10443/index…

深度学习如何弄懂那些难懂的数学公式?是否需要学习数学?

经过1~2年的学习&#xff0c;我觉得还是需要数学有一定认识&#xff0c;重新捡起高等数学、概率与数理、线代等这几本&#xff0c;起码基本微分方程、求导、对数、最小损失等等还是会用到。 下面给出几个链接&#xff0c;可以用于平时充电学习。 知乎上的&#xff1a; 机器学…

目标检测 - RCNN系列模型

文章目录 1. RCNN2. Fast-RCNN3. Faster-RCNN 1. RCNN 论文&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 地址&#xff1a;https://arxiv.org/abs/1311.2524 分为两个阶段&#xff1a; 目标候选框Object ProposalsProposal…

C语言float 类型数如何与0值⽐较?

一、问题 写出 float a 与“0值”⽐较的if语句。 二、解答 1、问题分析与解答 ⼀般地&#xff0c;如果⽤证判断⼀个数值型变量(short、int、long 等)&#xff0c;应该⽤ if(a0)&#xff0c;表示的含义是a与0进⾏“数值”上的⽐较; 但 float 型变量并不精确&#xff0c;不能直…

docker里安装conda,并source本地已有的虚拟环境包

有的环境比较难配&#xff0c;在镜像里配置的版本总是与本地不同&#xff0c;导致程序起不来&#xff0c;今天就用个最基础的镜像&#xff0c;去配置anaconda&#xff0c;然后直接导入虚拟环境。 本次使用镜像&#xff1a;nvcr.io/nvidia/cuda:12.2.0-runtime-ubuntu20.04&…

2024阿里云优惠活动隐藏页面,必看!

阿里云优惠活动隐藏页面之前在官网是可以看到的&#xff0c;2024阿里云官网升级后这个页面隐藏了&#xff0c;阿里云百科分享给大家阿里云优惠活动隐藏页面 aliyunbaike.com/go/activity 这是阿里云最新优惠活动集合页面&#xff0c;当前所有的活动都在这个页面&#xff0c;还有…

Ubuntu及CentOS 离线下载安装文件方法说明

一、离线安装包说明 Centos 包后缀名: rpm 安装方法&#xff1a;sudo rpm -ivh package.rpm Ubuntu 包后缀名字&#xff1a; deb 安装方法&#xff1a; sudo dpkg -i <package_file.deb> 二、手动下载 https://pkgs.org/ 通过网站搜索需要的离线包&#xff0c;选择…

数据库防水坝是什么?有什么作用?有哪些优势?

数据库是公司重要IT资产&#xff0c;是公司数据存储、数据整合、数据备份等重要载体。所以保障数据库安全至关重要。目前保障数据库安全产品较多&#xff0c;例如堡垒机、防火墙、数据库防水坝等等。今天我们就先来简单了解一下数据库防水坝是什么&#xff1f;有什么作用&#…

【位运算专题】介绍+详解5道题

本文讲解位运算的基础介绍和详解6道题&#xff0c;在讲解题目的同时提供AC代码【注&#xff1a;点击题目可打开对应链接】 1、位运算的基础介绍【重点】 如果上面位图不了解的&#xff0c;可以看我之前写过的文章&#xff1a; 【C和数据结构】位图和布隆过滤器-CSDN博客 2、…

LeetCode.670. 最大交换

题目 题目链接 分析 这道题的意思是我们只能交换一次&#xff0c;需要得到最大的数字。 我们的第一个想法就是要这个数字先变成一个数组&#xff0c;便于我们操作。 然后把数组最大的数放到第一个位置&#xff0c;如果最大的数字已经在第一个位置&#xff0c;那么就把次大的…

司铭宇老师:二手房电话营销培训:二手房电话销售技巧和话术

二手房电话营销培训&#xff1a;二手房电话销售技巧和话术 一、二手房电话销售的重要性 1.高效传播&#xff1a;通过电话&#xff0c;我们可以迅速将房源信息传播给潜在客户&#xff0c;提高房源的曝光率。 2.精准定位&#xff1a;通过电话沟通&#xff0c;我们可以初步了解客户…

掌握Vim:提升编程效率的实用指南

掌握Vim&#xff1a;提升编程效率的实用指南 1. 引言常用命令解析基础命令编辑命令搜索和替换移动和跳转窗口和标签页 Vim配置优化vimrc文件的基本设置常用配置项高级配置技巧 推荐插件及使用NERDTree&#xff1a;项目文件浏览YouCompleteMe&#xff1a;代码自动补全vim-gitgut…

[Unity] Tilemap瓦片左右翻转(上下翻转)

Tile&#xff08;瓦片&#xff09;左右翻转感觉是很常用的一个功能啊&#xff01;看了一些教程都没有提及&#xff0c;心想难道要把每张Sprite再做一张对称的、再做成瓦片吗&#xff1f; 图片量x2 、瓦片量x2、不现实&#xff01;一定有方法&#xff01; 搜索了了半天没找到方…

基于flask徐州市天气信息可视化分析系统04600-计算机毕业设计项目选题推荐(附源码)

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对天气信息等问题&#xff0c;对天气信息进行…

apk共享

cp apk到共享文件夹&#xff08;在雷电模拟器中MT管理文件时&#xff09; 如Linux操作cp

PLC从HTTP服务端获取JSON文件,解析数据到寄存器

智能网关IGT-DSER集成了多种PLC协议&#xff0c;方便实现各种PLC与HTTP服务端之间通讯。通过网关的参数配置软件绑定JSON文件的字段与PLC寄存器地址&#xff0c;配置URL&#xff0c;即可采用POST命令&#xff0c;将JSON文件提交给HTTP的服务端&#xff1b; 服务端有返回的JSON&…

求职开源找工作小程序源码系统 源码全开源可二开 带完整的安装包以及安装教程

移动互联网的普及以及不断的发展&#xff0c;求职者和招聘方对于便捷、高效的招聘服务的需求越来越高。传统的招聘网站已经无法满足市场的需求&#xff0c;小编给大家分享一款开源的找工作小程序源码系统&#xff0c;以提供更加灵活、便捷的招聘服务。 以下是部分代码示例&…

2.1第一次作业

1.atd和crond两个任务管理程序的区别 atd是一次性的执行了一次之后就不再执行&#xff0c;crond是周期性质的可以循环重复的执行定时任务 ⒉.指定在2023/04/15 09: 00将时间写入testmail.txt文件中 [rootserver fox]# at 9:00 2023-04-15 warning: commands will be executed…

【数据结构】二叉树算法讲解(定义+算法原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…

【蓝桥杯--图论】Dijkstra、Ballman-Ford、Spfa、Floyd

今日语录&#xff1a;每一次挑战都是一次成长的机会 文章目录 朴素DIjkstra堆优化的DijkstraBallman-FordFloydSpfa(求最短路)Spfa&#xff08;求是否含有负权&#xff09; 如上所示即为做题时应对的方法 朴素DIjkstra 引用与稠密图&#xff0c;即m<n^2 #include<iostrea…