LeetCode 670 最大交换数

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

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

过年过年,回家过年~

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

今天再刷一题。

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

理解:

(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的下标jint j = i + 1;for (i = i + 1; i < nums.length; ++i) {if (nums[i] >= nums[j]) {j = i;}}// 找到第一个小于MAX的值num[i]的下标ii = 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.hqwc.cn/news/424519.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI设计师主要是做什么的?

由于用户体验越来越受到重视&#xff0c;UI 设计师也成为现代互联网行业不可或缺的职业。他们通过美化和优化软件界面&#xff0c;为用户带来舒适的使用体验&#xff0c;目标是提高用户满意度。本文将对 UI 进行深入分析设计人员的工作职责和 UI 设计人员的工作内容&#xff0c…

设计模式-委托模式

设计模式专栏 模式介绍模式特点应用场景委托模式与代理模式的区别代码示例Java实现委托模式Python实现委托模式 委托模式在spring中的应用 模式介绍 委托模式是一种行为模式&#xff0c;用于在面向对象设计中解决多个对象接收并处理同一请求的问题。它通过将请求委托给另一个对…

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin 在 Android双击图片放大移动图中双击点到ImageView区域中心&#xff0c;Kotlin-CSDN博客 基础上&#xff0c;这次使用ScaleGestureDetector检测两根手指的缩放动作&a…

Dubbo源码解析第一期:如何使用Netty4构建RPC

一、背景 早期学习和使用Dubbo的时候&#xff08;那时候Dubbo还没成为Apache顶级项目&#xff09;&#xff0c;写过一些源码解读&#xff0c;但随着Dubbo发生了翻天覆地的变化&#xff0c;那些文章早已过时&#xff0c;所以现在计划针对最新的Apache Dubbo源码来进行“阅读理解…

插件化/热修复

1、如何规避Android P对私有API的访问限制 ● Android&#xff1a;Pie — 9.0 — 28 ● 一般都是通过反射访问私有 API 1.1、私有API Android源码查看网址 &#xff08;1&#xff09;hide public hide public方法无法直接使用&#xff0c;可以自行编译系统源码&#xff0c…

【Visual Object Tracking】Learning notes

Dense Optical Tracking: Connecting the Dots 参考学习来自&#xff1a; 单目标跟踪 Siamese系列网络&#xff1a;SiamFC、SiamRPN、one-shot跟踪、one-shotting单样本学习、DaSiamRPN、SiamRPN、SiamMask 单目标跟踪&#xff1a;跟踪效果 / 单目标跟踪&#xff1a;数据集处…

Python入门(一)

anaconda安装 官网&#xff1a;https://www.anaconda.com下载 jupyter lab 简介&#xff1a; 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境&#xff0c;你可以使用它编写notebook&#xff0c;操作终端&#xff0c;编辑markdown文本&#xf…

前端使用css去除input框的默认样式

关键点&#xff1a; /* 关键点&#xff0c;让输入框无边框 */outline:none; border:none; 1.效果图 2.html <div class"container"><input type"text" placeholder"请输入用户名"><input type"text" placeholder&q…

揭秘安全测试--一起学习吧之安全测试

笔者最近又有个迭代要上线了~正处于安全测试阶段&#xff0c;今天想和大家一起谈谈安全测试相关的知识。 安全测试是指对应用程序存在的安全问题进行测试&#xff0c;目的是防止意外或者恶意对应用程序进行攻击。安全测试分为安全功能测试和安全渗透测试&#xff0c;其中安全功…

Qt 多次绘图

使用Qt 的时候发现&#xff1a; 背景&#xff1a;自己定义一个类&#xff0c;把它和某个ui文件绑定。(类似 Qt creator 默认创建的工程&#xff09;问题&#xff1a;当鼠标在窗口内单击的时候会触发2次绘图。&#xff1f;难道不应该是一次吗&#xff1f; 于是开始了如下的测试…

STM32 freertos 使用软件模拟串口uart

如题&#xff0c;为什么要这样做&#xff1f; 最近做的一个项目上使用了74HC595作为指示灯板使用&#xff1b; 这个灯板与驱动板是通过排线连接&#xff0c;排线约25cm长&#xff1b; 在实验室测试一切正常&#xff0c;发到客户手上使用就出现了某个LED跳动情况&#xff1b;…

【6】密评中对服务端采用“挑战-响应”机制进行身份鉴别的验证

对服务端采用“挑战-响应”机制进行身份鉴别的验证 1、提取出服务端的签名值 签名值&#xff08;hex&#xff09;&#xff1a; 3045022100e4795b5a947526f8e7cbd0edd571ea8749e0efd24323799346ea2c740c006c5a0220026189e51c19d20d40a82606d0ed72cb9530a189bbb94c09e4559d7d8f…