Sponsored
Sponsored
This approach iterates through numbers from 1 to n and applies conditional logic using modulus operations to determine if a number should be represented as "Fizz", "Buzz", or "FizzBuzz". If none of these conditions are met, the number itself is returned as a string.
Time Complexity: O(n)
as we iterate through each number from 1 to n
once.
Space Complexity: O(n)
for the output array.
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4
5char** fizzBuzz(int n, int* returnSize) {
6 char** result = (char**)malloc(n * sizeof(char*));
7 *returnSize = n;
8 for (int i = 1; i <= n; i++) {
9 if (i % 3 == 0 && i % 5 == 0) {
10 result[i - 1] = strdup("FizzBuzz");
11 } else if (i % 3 == 0) {
12 result[i - 1] = strdup("Fizz");
13 } else if (i % 5 == 0) {
14 result[i - 1] = strdup("Buzz");
15 } else {
16 result[i - 1] = (char*)malloc(12 * sizeof(char));
17 sprintf(result[i - 1], "%d", i);
18 }
19 }
20 return result;
21}
22
The function fizzBuzz
takes an integer n
and generates an array of strings. It checks each number from 1 to n
for divisibility by 3 and 5. The use of strdup
efficiently allocates memory for the strings returned.
This approach uses a hash map to store possible outputs, simplifying conditional checks. By mapping integers to their respective Fizz
or Buzz
values, we consolidate decision logic, reducing redundancy in the code.
Time Complexity: O(n)
, since each element is evaluated once.
Space Complexity: O(n)
due to storage for result strings.
1import
This Java implementation uses an array for the standard outputs. It calculates which output to use by computing an index, simplifying the branch logic typically involved in such solutions.