宝宝也能看懂的 leetcode 周赛 - 172 - 1
2020/1/21 5:27:10
本文主要是介绍宝宝也能看懂的 leetcode 周赛 - 172 - 1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1323. 6 和 9 组成的最大数字
Hi 大家好,我是张小猪。欢迎来到『宝宝也能看懂』系列之 leetcode 周赛题解。
这里是第 172 期的第 1 题,也是题目列表中的第 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 。
官方难度
EASY
解决思路
题目内容非常直白,直白的我纠结了好久应该写些什么。这分明就是针对我小猪嘛,哼(傲娇脸
内容我就不做解释啦,相信小伙伴们都能看明白。不过这里说一点容易被忽略的事情,就是我们的翻转次数需要小于等于 1,也就是说其实是可以不翻转的。例如对于 9
,我们就不必要做翻转了。
关于思路的话,相信小伙伴们马上就能想到,我也就不做过多分析啦。总结一句话概括就是,把可能的最高位的 6 替换为 9 即可。如果不存在 6 则直接返回。下面小猪尝试了 3 种不同的方式来实现这个需求,也欢迎小伙伴们提供其他的方式鸭。
字符串替换
这个思路非常直接,就是把数字当作字符串来处理,并替换能发现的第一个 '6' 为 '9' 即可。在 JS 中,字符串的 replace
方法正好可以只替换第一个匹配值,于是我们可以如下来方便的实现:
const maximum69Number = num => Number(num.toString().replace('6', '9'));
数字运算
从数字本身出发,我们可以尝试从最高位开始一位一位的寻找可能的 6,然后加上对应的值即可。由于题目限制了 num
的范围是 [1, 10^4]
,所以我们只需要依次判断千位、百位、十位、个位。关于这个对应的值,我们可以举个例子,例如发现了千位是 6,那么我们把原来的数加上 3000 就可以啦。具体代码如下:
const maximum69Number = num => { if (num / 1000 << 0 === 6) return num + 3000; if ((num / 100 << 0) % 10 === 6) return num + 300; if (num % 100 / 10 << 0 === 6) return num + 30; if (num % 10 === 6) return num + 3; return num; };
打表法
当当当当,是时候再次祭出这个看起来很无耻的方法啦,哈哈哈哈嗝,笑出猪叫 >.<
根据题目对于 num
的范围限制,以及它只能包含 6 和 9 这两个数字,所以其实可选范围很小的。我们只需要用代码来生成一个包含所有可能的字典即可。
既然又提到了字典,那么就该使用我们的魔法咒语啦,小伙伴们还记得咒语么?『巴拉巴拉 张小猪是最棒(pang)哒』。心神合一的念完这个咒语我们就得到了下面的这个字典:
const map = { 6: 9, 9: 9, 66: 96, 69: 99, 96: 99, 99: 99, 666: 966, 669: 969, 696: 996, 699: 999, 966: 996, 969: 999, 996: 999, 999: 999, 6666: 9666, 6669: 9669, 6696: 9696, 6699: 9699, 6966: 9966, 6969: 9969, 6996: 9996, 6999: 9999, 9666: 9966, 9669: 9969, 9696: 9996, 9699: 9999, 9966: 9996, 9969: 9999, 9996: 9999, 9999: 9999 };
那么既然有了字典,最终我们的函数只需要直接返回映射值就好啦。是不是很简单鸭,小猪骄傲的摸了摸猪鼻子,耶~
const maximum69Number = num => map[num];
总结
虽然还是惯例的保底送分题,不过小猪还是尝试从不同的方向提供一些思路。其中小猪自己最喜欢的当然还是打表法啦,因为够帅(wu)气(chi),哈哈哈哈嗝。小伙伴们最喜欢哪一种呢,不妨留言告诉小猪哟。
这大概会是年前的最后一期周赛题解了吧,希望小猪不要因为 峡谷吃鸡 努力工作而拖更,嗯嗯(严肃脸
相关链接
这篇关于宝宝也能看懂的 leetcode 周赛 - 172 - 1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21动态面包屑教程:新手入门指南
- 2024-12-21动态主题处理教程:新手必读指南
- 2024-12-21富文本编辑器教程:新手入门指南
- 2024-12-21前端项目部署教程:从零开始的全面指南
- 2024-12-21拖拽表格教程:轻松入门指南
- 2024-12-21Element-Plus教程:新手入门与实战指南
- 2024-12-21TagsView标签栏导航教程:轻松掌握标签栏导航
- 2024-12-21动态表格实战:新手入门教程
- 2024-12-21动态菜单项实战:一步步教你实现动态菜单项
- 2024-12-21动态面包屑实战:新手教程