LeetCode1323:6和9组成的最大数字
给你一个仅由数字 6 和 9 组成的正整数 num。
你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。
请返回你可以得到的最大数字。
示例 1:
输入: num = 9669
输出: 9969
解释:
改变第一位数字可以得到 6669 。
改变第二位数字可以得到 9969 。
改变第三位数字可以得到 9699 。
改变第四位数字可以得到 9666 。
其中最大的数字是 9969 。
示例 2:
输入: num = 9996
输出: 9999
解释: 将最后一位从 6 变到 9,其结果 9999 是最大的数。
示例 3:
输入: num = 9999
输出: 9999
解释: 无需改变就已经是最大的数字了。
提示:
num每一位上的数字都是 6 或者 9 。
思路分析
题目要求的是返回最大的数字,那肯定是把6转成9 所以只要把第一个6转成9就是最大的数。1.将num表示成数组的形式; 2.将最大值先复制给num; 3.从最高位开始替换,如果是‘6’,替换成‘9’,并停止循环
分为三步: 1、数字存进数组,个位存进数组0索引,依次向下。 2、找数字中9的最高位(也就是数组倒序查找9)。 3、将数组中的数字输出,从索引0(个位)依次输出,每次乘10.
算法代码
public int maximum69Number(int num) {
int[] res = new int[4];
int count = 0, ans = 0, mut = 1, x = num;
while (x != 0) {
res[count++] = x % 10;
x = x / 10;
}
count--;
for (int i = count; i >= 0; i--) {
if (res[i] == 6) {
res[i] = 9;
break;
}
}
for (int i = 0; i <= count; i++) {
ans += res[i] * mut;
mut *= 10;
}
return ans;
}
结果详情
算法复杂度
- 空间复杂度:
- 时间复杂度:
在掘金(JUEJIN)一起进步,一起成长!