FizzBuzz

Given an integer n, return a string array answer (1-indexed) where: answer[i] == "FizzBuzz" if i is divisible by 3 and 5, answer[i] == "Fizz" if i is divisible by 3, answer[i] == "Buzz" if i is divisible by 5, otherwise answer[i] == i as a string.

Example 1
Input: n = 3
Output: ["1","2","Fizz"]
Example 2
Input: n = 5
Output: ["1","2","Fizz","4","Buzz"]
Example 3
Input: n = 15
Output: ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

Solution Approach

Iterate from 1 to n. For each number, build the result string by checking divisibility. Check divisibility by 15 (FizzBuzz) first, or use a StringBuilder approach to concatenate "Fizz" and "Buzz" independently.

  • For each i from 1 to n, build a string using StringBuilder.
  • If i % 3 == 0, append "Fizz".
  • If i % 5 == 0, append "Buzz".
  • If StringBuilder is still empty, use String.valueOf(i).
Java
class Solution {
    public List<String> fizzBuzz(int n) {
        List<String> result = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            StringBuilder sb = new StringBuilder();
            if (i % 3 == 0) sb.append("Fizz");
            if (i % 5 == 0) sb.append("Buzz");
            if (sb.length() == 0) sb.append(i);
            result.add(sb.toString());
        }
        return result;
    }
}
Complexity Analysis:

Time complexity: O(n). One pass through numbers 1 to n.
Space complexity: O(n). For the output list.