目录
最大交换
题解:
代码:
最大交换
670. 最大交换 - 力扣(LeetCode)
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :输入: 9973
输出: 9973
解释: 不需要交换。
注意:给定数字的范围是 [0, 108]
题解:
选择排序的思想
(51条消息) 选择排序(超详细)_@烟雨倾城ゝ的博客-CSDN博客
代码:
class Solution { public int maximumSwap(int num) { if (num % 10 == num) return num; char[] arr = String.valueOf(num).toCharArray(); for (int i = 0; i < arr.length; i++) { // 从i后面选择一个最大的,这个最大的离i越远越好,比如1993,1交换第二个9更优,所以j倒序遍历 int maxIndex = i; for (int j = arr.length - 1; j >= i + 1; j--) { if (arr[j] > arr[maxIndex]) { maxIndex = j; } } if (maxIndex != i) { char tmp = arr[i]; arr[i] = arr[maxIndex]; arr[maxIndex] = tmp; return Integer.parseInt(new String(arr)); } } return num; } }