diff --git a/src/main/java/com/thealgorithms/others/FizzBuzz.java b/src/main/java/com/thealgorithms/others/FizzBuzz.java
new file mode 100644
index 000000000000..c4a41d6eac8b
--- /dev/null
+++ b/src/main/java/com/thealgorithms/others/FizzBuzz.java
@@ -0,0 +1,34 @@
+package com.thealgorithms.others;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Classic FizzBuzz: for numbers 1 to n, returns "FizzBuzz" if divisible by
+ * both 3 and 5, "Fizz" if divisible by 3, "Buzz" if divisible by 5, or the
+ * number as a string otherwise.
+ *
+ *
Time complexity: O(n), Space complexity: O(n)
+ *
+ * @see LeetCode #412
+ */
+public final class FizzBuzz {
+ private FizzBuzz() {
+ }
+
+ public static List fizzBuzz(int n) {
+ List result = new ArrayList<>();
+ for (int i = 1; i <= n; i++) {
+ if (i % 15 == 0) {
+ result.add("FizzBuzz");
+ } else if (i % 3 == 0) {
+ result.add("Fizz");
+ } else if (i % 5 == 0) {
+ result.add("Buzz");
+ } else {
+ result.add(String.valueOf(i));
+ }
+ }
+ return result;
+ }
+}
diff --git a/src/test/java/com/thealgorithms/others/FizzBuzzTest.java b/src/test/java/com/thealgorithms/others/FizzBuzzTest.java
new file mode 100644
index 000000000000..09a97972a9b1
--- /dev/null
+++ b/src/test/java/com/thealgorithms/others/FizzBuzzTest.java
@@ -0,0 +1,39 @@
+package com.thealgorithms.others;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.List;
+import org.junit.jupiter.api.Test;
+
+public class FizzBuzzTest {
+
+ @Test
+ public void testFizzBuzzUpToFifteen() {
+ List result = FizzBuzz.fizzBuzz(15);
+ assertEquals("1", result.get(0));
+ assertEquals("2", result.get(1));
+ assertEquals("Fizz", result.get(2));
+ assertEquals("4", result.get(3));
+ assertEquals("Buzz", result.get(4));
+ assertEquals("Fizz", result.get(5));
+ assertEquals("7", result.get(6));
+ assertEquals("8", result.get(7));
+ assertEquals("Fizz", result.get(8));
+ assertEquals("Buzz", result.get(9));
+ assertEquals("11", result.get(10));
+ assertEquals("Fizz", result.get(11));
+ assertEquals("13", result.get(12));
+ assertEquals("14", result.get(13));
+ assertEquals("FizzBuzz", result.get(14));
+ }
+
+ @Test
+ public void testSingleElement() {
+ assertEquals(List.of("1"), FizzBuzz.fizzBuzz(1));
+ }
+
+ @Test
+ public void testFizz() {
+ assertEquals(List.of("1", "2", "Fizz"), FizzBuzz.fizzBuzz(3));
+ }
+}