刷题日记 1323. 6 和 9 组成的最大数字

123 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

1323. 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
解释:无需改变就已经是最大的数字了。

提示:

  • 1 <= num <= 10^4
  • num 每一位上的数字都是 6 或者 9 。

二、思路分析:

从低位到高位取出每一位的数字 然后从高位到低位依次还原,遇到第一个6把它变成9,flag控制6变9的数量,默认只变一次 ps:如果有从高到低取每一位的方法会更简单,但目前没有思路。 转字符串需要用到额外的库,或者手动实现,但消耗会更大。

三、AC 代码:

int maximum69Number (int num){
    int num_list[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    int i = 0;
    for (; i < 11; i++){
        num_list[i] = num % 10;
        num /= 10;
    }
    int flag = 1, new_num = 0;
    for (i = 10; i >= 0; i--){
        if (flag && num_list[i] == 6){
            num_list[i] = 9;
            flag--;
        }
        new_num = 10 * new_num + num_list[i];
    }
    return new_num;
}

范文参考:

python 解法 - 6 和 9 组成的最大数字 - 力扣(LeetCode) (leetcode-cn.com)