LeetCode刷题记录(十七):6 和 9 组成的最大数字

183 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第17天,点击查看活动详情

6 和 9 组成的最大数字

题目如下图所示,也可以在LeetCode题目中找到此题。

image.png

题目解析

题目提供素材

本道题提供了一个素材。

  1. 一个由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判断,那样估计能打倒一大批人。

image.png