一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情。
6 和 9 组成的最大数字
题目如下图所示,也可以在LeetCode题目中找到此题。
题目解析
题目提供素材
本道题提供了一个素材。
- 一个由6和9组成的数字。可以是6,也可以是9,也可以是69/96/99等等。
注意:数字最大位数为4位;而且num每一位上的数字都是 6 或者 9。
我的解读
这道题在一众题中是属于简单的,而且就本身的题材而言,完全可以利用穷举法一一列举出来后,通过if判断来获取;或者通过Map集合直接get出来。
相信那样的效率绝对会很高的。
但是出于刷题学习的目的,还是要通过一定的规律和逻辑来得到预期结果的。
在这其中,我们可以通过固定的3的10次方来衡量,我们只需要判断需要加上10的几次方即可。
解题思路
我实在是没控制住穷举法,所以穷举了几个结果值。
然后通过循环来判断出10的几次方即可。
其中需要有两个中间值shi、index。
shi来存储当前循环遍历的层数,也是当前循环到达的10的次方数。
index来判断遇到6的情况,因为是从小到大的遍历,需要循环完每一个数值才行。
具体可以看一下代码,题不难。
代码
执行代码如下所示:
class Solution {
public int maximum69Number (int num) {
if(num == 6){
return 9;
}
if(num == 9 || num == 99 || num == 999 || num == 9999){
return num;
}
int shi = 1;
int index = 0;
for (int i = num; i > 0; i = i / 10) {
if(i % 10 == 6){
index = shi;
}
shi = shi * 10;
}
return num + index * 3;
}
}
执行结果
今天的执行结果还可以的,我就该全算出来,直接if判断,那样估计能打倒一大批人。