From 4ea30985955ed36d361b586d412363f1c7850db0 Mon Sep 17 00:00:00 2001 From: Hardik Pawar <97388607+Hardvan@users.noreply.github.com> Date: Sat, 26 Oct 2024 21:32:07 +0530 Subject: [PATCH] Enhance docs, add tests in `MajorityElement` (#5978) --- .../hashmap/hashing/MajorityElement.java | 24 +++++++------ .../hashmap/hashing/MajorityElementTest.java | 35 +++++++++++++++++++ 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java index 5424e14c7..915e4228b 100644 --- a/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java +++ b/src/main/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElement.java @@ -3,19 +3,23 @@ package com.thealgorithms.datastructures.hashmap.hashing; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -/* -This class finds the majority element(s) in an array of integers. -A majority element is an element that appears more than or equal to n/2 times, where n is the length -of the array. -*/ + +/** + * This class provides a method to find the majority element(s) in an array of integers. + * A majority element is defined as an element that appears at least ⌊n/2⌋ times, + * where n is the length of the array. If multiple elements qualify as majority elements, + * they are all returned in a list. + */ public final class MajorityElement { private MajorityElement() { } - /* - This method returns the majority element(s) in the given array of integers. - @param nums: an array of integers - @return a list of majority elements - */ + + /** + * Returns a list of majority element(s) from the given array of integers. + * + * @param nums an array of integers + * @return a list containing the majority element(s); returns an empty list if none exist + */ public static List majority(int[] nums) { HashMap numToCount = new HashMap<>(); for (final var num : nums) { diff --git a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java index 49133ba5f..7dcd5eb7a 100644 --- a/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java +++ b/src/test/java/com/thealgorithms/datastructures/hashmap/hashing/MajorityElementTest.java @@ -42,4 +42,39 @@ public class MajorityElementTest { List actual = MajorityElement.majority(nums); assertEquals(expected, actual); } + + @Test + void testMajorityWithAllElementsSame() { + int[] nums = {5, 5, 5, 5, 5}; + List expected = new ArrayList<>(); + expected.add(5); + List actual = MajorityElement.majority(nums); + assertEquals(expected, actual); + } + + @Test + void testMajorityWithEvenCountAndOneMajorityElement() { + int[] nums = {1, 2, 2, 3, 3, 2}; + List expected = new ArrayList<>(); + expected.add(2); + List actual = MajorityElement.majority(nums); + assertEquals(expected, actual); + } + + @Test + void testMajorityWithNoElementsEqualToHalf() { + int[] nums = {1, 1, 2, 2, 3, 3, 4}; + List expected = Collections.emptyList(); + List actual = MajorityElement.majority(nums); + assertEquals(expected, actual); + } + + @Test + void testMajorityWithLargeArray() { + int[] nums = {1, 2, 3, 1, 1, 1, 2, 1, 1}; + List expected = new ArrayList<>(); + expected.add(1); + List actual = MajorityElement.majority(nums); + assertEquals(expected, actual); + } }