用java编写代码 实现给定一个非负整数,你可以至多交换一次数字中的任意两位,返回你得到的最大值。
时间: 2024-06-05 09:07:30 浏览: 14
请给出解答。
可以将数字转化为字符数组,从左到右找到第一个比后面数字小的位置,然后再从右到左找到第一个比该位置数字大的位置,交换两个位置上的数字即可。
以下是Java代码实现:
public int maximumSwap(int num) {
char[] nums = String.valueOf(num).toCharArray();
int len = nums.length;
int[] cnts = new int[10];
for (int i = 0; i < len; i++) {
cnts[nums[i] - '0'] = i;
}
for (int i = 0; i < len; i++) {
for (int j = 9; j > nums[i] - '0'; j--) {
if (cnts[j] > i) {
char tmp = nums[i];
nums[i] = nums[cnts[j]];
nums[cnts[j]] = tmp;
return Integer.parseInt(new String(nums));
}
}
}
return num;
}
相关问题
给定一个非负整数,你可以至多交换一次数字中的任意两位,返回你得到的最大值。 java
好的,这是一个非常好的问题。这个问题的解法比较简单,我们可以使用贪心算法来解决它。
具体来说,我们可以将这个非负整数转化为字符串,然后逐一比较相邻的字符,如果前面的字符比后面的字符小,那么就交换它们,然后再将整个字符串转化为整数。这样做的原理是,我们通过交换数字可以让高位上的数字变大,从而得到更大的整数。
下面是一个基于贪心算法的 Java 代码实现:
public int maximumSwap(int num) {
char[] digits = Integer.toString(num).toCharArray();
int[] last = new int[10];
for (int i = 0; i < digits.length; i++) {
last[digits[i] - '0'] = i;
}
for (int i = 0; i < digits.length; i++) {
for (int j = 9; j > digits[i] - '0'; j--) {
if (last[j] > i) {
char tmp = digits[i];
digits[i] = digits[last[j]];
digits[last[j]] = tmp;
return Integer.parseInt(new String(digits));
}
}
}
return num;
}
这个算法的时间复杂度是 O(n),其中 n 是这个非负整数的位数。
用Java编写一个函数,给定一个非负整数num反复将各个位上的数字相加,直到结果为一位数
好的,这是一个编程问题。可以使用以下代码实现:
public static int addDigits(int num) {
while (num >= 10) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
num = sum;
}
return num;
}
这个函数会一直将num的各个位上的数字相加,直到结果为一位数,然后返回这个一位数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)