每日一题670. 最大交换
Posted 王六六同学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题670. 最大交换相关的知识,希望对你有一定的参考价值。
给定一个非负整数,你至多可以交换一次数字中的任意两位。
返回你能得到的最大值。
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
输入: 9973
输出: 9973
解释: 不需要交换。
排序 + 对比交换
要交换两个数,使其交换后得到最大值。
那么从高位开始,找到第一个没按照降序排列的数,就是我们需要替换的数了。所以,可以通过Arrays.sort()方法,将原有数组进行排序(默认是升序排序,当与原数组对比的时候,我们可以采用对排序后的数组执行倒序遍历即可)。
将原数组与排序数组进行对比,发现第3个位置是不对的,应该是8,但是原数组却是3,所以我们将原数组的3替换为8。
下一步,就是需要将原数组的8替换为3了。此时,为了保证交互后得到最大值,所以我们需要采用逆序遍历的方式,从数组的尾部开始找8,当找到后,将8替换为3即可。
cl
以上是关于每日一题670. 最大交换的主要内容,如果未能解决你的问题,请参考以下文章