LeetCode算法题-Fizz Buzz(Java实现)
这是悦乐书的第221次更新,第233篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第88题(顺位题号是412)。
编写一个程序,输出从1到n的数字的字符串表示。但对于三的倍数,它应输出“Fizz”而不是数字,对于五的倍数,应该输出“Buzz”。 对于三和五共同的倍数,应输出“FizzBuzz”。例如:
输入:n = 15
输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
将n转为对应的字符串,分为三种情况:
1、是3或者5的倍数,那么n转为"Fizz"或者"Buzz"。
2、是3和5的共同倍数,那么n转为"FizzBuzz"。
3、不是前两种情况,那么n直接转为字符串。
因此,直接使用取余,判断余数是否为0,来分别对应上述三种情况,将对应的字符串添加进list中即可。
此解法时间复杂度为O(n),空间复杂度为O(1)。
public List<String> fizzBuzz(int n) {
List<String> list = new ArrayList<String>();
for (int i=1; i<= n; i++) {
if (i%3 != 0) {
if (i%5 != 0) {
list.add(i+"");
} else {
list.add("Buzz");
}
} else {
if (i%5 != 0) {
list.add("Fizz");
} else {
list.add("FizzBuzz");
}
}
}
return list;
}
03 第二种解法
在第一种解法里,我们分析了三种需要判断的情况,对于第二种情况,可以直接用n对15取余来判断。
此解法时间复杂度为O(n),空间复杂度为O(1)。
public List<String> fizzBuzz2(int n) {
List<String> list = new ArrayList<String>();
for (int i = 1; i <= n; i++) {
if (i % 15 == 0) {
list.add("FizzBuzz");
} else if (i % 3 == 0) {
list.add("Fizz");
} else if (i % 5 == 0) {
list.add("Buzz");
} else {
list.add(i+"");
}
}
return list;
}
04 第三种解法
使用两个变量计数(也可以理解为双指针),替换取余算法。
当某一变量等于3或者5时,将其所代表的Fizz或者Buzz字符串添加进list,然后变量归零。当一变量等于3,且另一变量等于5时,将FizzBuzz添加进list,然后两变量同时归零。
此解法时间复杂度为O(n),空间复杂度为O(1)。
public List<String> fizzBuzz3(int n) {
List<String> list = new ArrayList<String>();
int Fizz = 0, Buzz = 0;
for (int i = 1; i <= n; i++) {
Fizz++;
Buzz++;
if (Fizz == 3 && Buzz == 5) {
list.add("FizzBuzz");
Fizz = 0;
Buzz = 0;
} else if(Fizz == 3) {
list.add("Fizz");
Fizz = 0;
} else if(Buzz == 5) {
list.add("Buzz");
Buzz = 0;
} else {
list.add(i+"");
}
}
return list;
}
05 小结
算法专题目前已连续日更超过两个月,算法题文章88+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Fizz Buzz(Java实现)的更多相关文章
- LeetCode算法题-Heaters(Java实现)
这是悦乐书的第239次更新,第252篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第106题(顺位题号是475).冬天来了!您在比赛期间的第一份工作是设计一个固定温暖半径 ...
- LeetCode算法题-Sqrt(Java实现)
这是悦乐书的第158次更新,第160篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第17题(顺位题号是69). 计算并返回x的平方根,其中x保证为非负整数. 由于返回类型 ...
- LeetCode算法题-Subdomain Visit Count(Java实现)
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com& ...
- LeetCode算法题-Number of Lines To Write String(Java实现)
这是悦乐书的第319次更新,第340篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第188题(顺位题号是806).我们要将给定字符串S的字母从左到右写成行.每行最大宽度为 ...
- LeetCode算法题-Unique Morse Code Words(Java实现)
这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系 ...
- LeetCode算法题-Rotate String(Java实现)
这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 0 ...
- LeetCode算法题-Rotated Digits(Java实现)
这是悦乐书的第316次更新,第337篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第185题(顺位题号是788).如果一个数字经过180度旋转后,变成了一个与原数字不同的 ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Minimum Distance Between BST Nodes(Java实现-四种解法)
这是悦乐书的第314次更新,第335篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第183题(顺位题号是783).给定具有根节点值的二叉搜索树(BST),返回树中任何两个 ...
随机推荐
- 监控MySQL组复制
使用 Perfomance Schema 中的表来监控组复制,假定你的MySQL编译时已经启动了 Performance Schema 表.组复制将添加如下两张 P_S 表: performance_ ...
- hadoop小结
测试小结:1.如果只需要对数据集进行过滤,筛选则只需要编写Mapper类,不需要Reduce类,此时要执行下面一条语句:job.setNumReduceTesk(0);2.如果需要对处理的数据进行分组 ...
- oracle 查询表中重复数据
select * from tablename where id in (select id from tablename group by id having count(id) > 1)
- 黑客常用 Linux 入侵常用命令
大学曾误入歧途算是一个脚本小子.... 系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cp ...
- 6.3 OrderBy 优化
1. 创建实例 create table tblA( age int, birth TIMESTAMP not null ); insert into tblA(age,birth) values(2 ...
- CSS border-collapse 属性
表格边框合并: table { border-collapse:collapse; 边框会合并为一个单一的边框 } ----------------------------------------- ...
- jQuery效果之jQuery Color animation 色彩动画扩展
jQuery 的动画方法(animate)支持各种属性的过渡,但是默认并不支持色彩的过渡,该插件正是来补足这一点! PS: 该插件支持 RGBA 颜色的过渡,但是请注意,IE8以下的版本不支持 RGB ...
- Web标准中xhtml规范的内容有哪些
1.所有的标记都必须要有一个相应的结束标记 以前在HTML中,你可以打开许多标签,例如<p>和<li>而不一定写对应的</p>和</li>来关闭它们.但 ...
- 洛谷P3245 [HNOI2016]大数(莫队)
题意 题目链接 Sol 莫队板子题.. 维护出每个位置开始的字符串\(mod P\)的结果,记为\(S_i\) 两个位置\(l, r\)满足条件当且仅当\(S_l - S_r = 0\),也就是\(S ...
- MongoDB 3.0 WT引擎参考配置文件
单实例: systemLog: destination: file ###日志存储位置 path: /data/mongodb/log/mongod.log logAppend: true stora ...