前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漫画:六九式是一道简单有趣的算法题(开车...)

漫画:六九式是一道简单有趣的算法题(开车...)

作者头像
程序员小浩
发布2020-05-09 16:17:07
1.1K0
发布2020-05-09 16:17:07
举报
文章被收录于专栏:小浩算法小浩算法

(越单纯,越幸运)

今天是小浩算法 “365刷题计划” 第94天 。69式是一种。。。咳咳,六九问题是一道很有趣的算法题。嗯,不服来辩。

01

PART

六九问题

注意,num 每一位上的数字都是 6 或者 9 。

1323. 6 和 9 组成的最大数字

给你一个仅由数字 6 和 9 组成的正整数 num

你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。

请返回你可以得到的最大数字。

大概就是这么个意思:

输入:num = 9669

输出:9969

解释:

改变第一位数字可以得到 6669 。

改变第二位数字可以得到 9969 。

改变第三位数字可以得到 9699 。

改变第四位数字可以得到 9666 。

其中最大的数字是 9969 。

02

PART

题解分析

因为题目太简单了,所以。。。。我也不知道为什么拿来讲。反正不是凑字数 ?(我一定不会告诉你我是因为标题污所以选它的)

我们只要找到 num 中最高位的 6,将其翻转成 9,就可以找到答案。

代码语言:javascript
复制
//java
class Solution {
    public int maximum69Number (int num) {
        String s = num + "";
        s = s.replaceFirst("6", "9");
        return Integer.valueOf(s);
    }
}

emmmmm,大概就是这样。。。。我感觉要被锤,溜了溜了。

(向下翻还有....)

郑重申明(读我的文章必看):

  • 本系列所有教程都不会用到复杂的语言特性,大家无须担心没有学过相关语法,算法思想才是最重要的!
  • 作为学术文章,虽然风格可以风趣,但严谨,我是认真的。本文所有代码均在leetcode进行过测试运行。

03

PART

这道题考啥

写出上面的答案,大概率是被面试官锤了。那这道题到底是考察我们什么呢?

大家可以看到,这是一道数学题。所以我们需要用数学的方法来进行求解。

代码语言:javascript
复制
//java
class Solution {
    public int maximum69Number(int num) {
        if (num / 1000 == 6) {
            num += 3000;
        } else if (num % 1000 / 100 == 6) {
            num += 300;
        } else if (num % 100 / 10 == 6) {
            num += 30;
        } else if (num % 10 == 6) {
            num += 3;
        }
        return num;
    }
}

其实这种解法,和上面的解法没什么区别。都是从高位到低位进行判断,遇到 6 就将其变为 9。只不过,上面是通过 replaceFirst 来进行,下面通过数值相加的方式来进行。那这种方法的效率我们看看:

吊炸天有没有!难怪古人说,学好数理化,走遍天下都不怕。只会 replace 画,面试结束找妈妈。

现在你知道为什么你和别人一起去面试,面试官挂了你,而选择别人了吧。面试官的思维,往往就是这么朴实无华且枯燥。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小浩算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1323. 6 和 9 组成的最大数字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档