Create by jsliang on 2019-07-25 15:48:322019-07-25 16:08:25
一 目录
不折腾的前端,和咸鱼有什么区别
| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | | 3.1 解法 - 暴力破解 | | 3.2 解法 - 奇技淫巧 |
二 前言
难度:简单
涉及知识:无
题目地址:https://leetcode-cn.com/problems/fizz-buzz/
题目内容:
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
三 解题
小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 的解题思路。
3.1 解法 - 暴力破解
解题代码:
var fizzBuzz = function(n) {
let result = [];
for (let i = 1; i <= n; i++) {
if (i % 3 === 0 && i % 5 === 0) {
result.push('FizzBuzz');
} else if (i % 3 === 0) {
result.push('Fizz');
} else if (i % 5 === 0) {
result.push('Buzz');
} else {
result.push(i + '');
}
}
return result;
};
执行测试:
n
:15
return
:
[ '1',
'2',
'Fizz',
'4',
'Buzz',
'Fizz',
'7',
'8',
'Fizz',
'Buzz',
'11',
'Fizz',
'13',
'14',
'FizzBuzz' ]
LeetCode Submit:
✔ Accepted
✔ 8/8 cases passed (92 ms)
✔ Your runtime beats 76.26 % of javascript submissions
✔ Your memory usage beats 57.05 % of javascript submissions (37.3 MB)
知识点:
push()
:push()
方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。push()
详细介绍
解题思路:
虽然这是一道 LeetCode 题,但是我觉得这是一道大一作业题,可以说是简单地不能再简单了,完全就是玩了可以丢的那种~
自行解析,不做评论
3.2 解法 - 奇技淫巧
解题代码:
var fizzBuzz = function(n) {
return Array(n).fill(0).map((_, i) => (i + 1) % 3 === 0? (i + 1) % 5 === 0? 'FizzBuzz': 'Fizz': (i + 1) % 5 === 0? 'Buzz': i + 1 + '');
};
执行测试:
n
:15
return
:
[ '1',
'2',
'Fizz',
'4',
'Buzz',
'Fizz',
'7',
'8',
'Fizz',
'Buzz',
'11',
'Fizz',
'13',
'14',
'FizzBuzz' ]
LeetCode Submit:
✔ Accepted
✔ 8/8 cases passed (92 ms)
✔ Your runtime beats 76.26 % of javascript submissions
✔ Your memory usage beats 30.13 % of javascript submissions (37.4 MB)
知识点:
map()
:遍历数组,item
返回遍历项,index
返回当前索引。map()
详细介绍
解题思路:
有点像是强行压缩成一行,引起极度不适~
业务代码中不要这么写喔~要不然你队友会拍死你的。
这种写法不好维护
不折腾的前端,和咸鱼有什么区别!
jsliang 会每天更新一道 LeetCode 题解,从而帮助小伙伴们夯实原生 JS 基础,了解与学习算法与数据结构。
扫描上方二维码,关注 jsliang 的公众号,让我们一起折腾!
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。