Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,23 @@
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<Integer> majority(int[] nums) {
HashMap<Integer, Integer> numToCount = new HashMap<>();
for (final var num : nums) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,39 @@ void testMajorityWithEmptyArray() {
List<Integer> actual = MajorityElement.majority(nums);
assertEquals(expected, actual);
}

@Test
void testMajorityWithAllElementsSame() {
int[] nums = {5, 5, 5, 5, 5};
List<Integer> expected = new ArrayList<>();
expected.add(5);
List<Integer> actual = MajorityElement.majority(nums);
assertEquals(expected, actual);
}

@Test
void testMajorityWithEvenCountAndOneMajorityElement() {
int[] nums = {1, 2, 2, 3, 3, 2};
List<Integer> expected = new ArrayList<>();
expected.add(2);
List<Integer> actual = MajorityElement.majority(nums);
assertEquals(expected, actual);
}

@Test
void testMajorityWithNoElementsEqualToHalf() {
int[] nums = {1, 1, 2, 2, 3, 3, 4};
List<Integer> expected = Collections.emptyList();
List<Integer> actual = MajorityElement.majority(nums);
assertEquals(expected, actual);
}

@Test
void testMajorityWithLargeArray() {
int[] nums = {1, 2, 3, 1, 1, 1, 2, 1, 1};
List<Integer> expected = new ArrayList<>();
expected.add(1);
List<Integer> actual = MajorityElement.majority(nums);
assertEquals(expected, actual);
}
}