[leetcode/lintcode 题解] 算法面试真题详解:Fizz Buzz 问题

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: [leetcode/lintcode 题解] 算法面试真题详解:Fizz Buzz 问题

描述
给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:

  • 如果这个数被3整除,打印fizz.
  • 如果这个数被5整除,打印buzz.
  • 如果这个数能同时被3和5整除,打印fizz buzz.
  • 如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。

在线评测地址:领扣题库官网

样例

比如 n = 15, 返回一个字符串数组:
[
  "1", "2", "fizz",
  "4", "buzz", "fizz",
  "7", "8", "fizz",
  "buzz", "11", "fizz",
  "13", "14", "fizz buzz"
]

挑战:
你是否可以只用一个 if 来实现

题解:
有的面试官会要求你能不能只用一个 if 语句来完成这个题,这是一个参考。突破点在于:那我可以用 while 呀~

class Solution {
    /**
     * param n: As description.
     * return: A list of strings.
     */
    public ArrayList<String> fizzBuzz(int n) {
        ArrayList<String> results = new ArrayList<String>();
        int i = 1;
        //p3表示3的多少倍,p5表示5的多少倍
        int p3 = 1, p5 = 1;
        
        while (i <= n) {
          while (i < p3 * 3 && i < p5 * 5) {
            results.add(i + "");
            i++;
          }
        
          if (i <= n && p3 * 3 == p5 * 5) {
            results.add("fizz buzz");
            p3++;
            p5++;
            i++;
            continue;
          }
        
          while (i <= n && p3 * 3 <= i) {
            results.add("fizz");
            p3++;
            i++;
          }
        
          while (i <= n && p5 * 5 <= i) {
            results.add("buzz");
            p5++;
            i++;
          }
        }
        
        return results;
    }
}

更多题解参考:九章官网solution

相关文章
|
9月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
237 0
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
462 4
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
434 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
332 2
|
开发者 索引 Python
这些年背过的面试题——LeetCode
本文是技术人面试系列LeetCode篇,一文带你详细了解,欢迎收藏!
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
302 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
269 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
298 1
|
9月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
765 0