V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hakunamatata11
V2EX  ›  推广

九章算法 | 亚马逊面试题: Fizz Buzz 问题

  •  
  •   hakunamatata11 · 2021-02-02 10:38:56 +08:00 · 580 次点击
    这是一个创建于 1394 天前的主题,其中的信息可能已经有所发展或是发生改变。

    描述

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

    • 如果这个数被 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;
        }
    }
    
    

    更多题解参考:九章算法

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5771 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:35 · PVG 11:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.