Skip to content

Commit 50318bd

Browse files
solves majority element ii in java
1 parent ea80d1e commit 50318bd

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@
184184
| 225 | [Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues) | [![Java](assets/java.png)](src/MyStack.java) [![Python](assets/python.png)](python/implement_stack_using_queues.py) | |
185185
| 226 | [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree) | [![Java](assets/java.png)](src/InvertBinaryTree.java) [![Python](assets/python.png)](python/invert_binary_tree.py) | |
186186
| 227 | [Basic Calculator II](https://leetcode.com/problems/basic-calculator-ii) | [![Java](assets/java.png)](src/BasicCalculatorII.java) | |
187-
| 229 | [Majority Element II](https://leetcode.com/problems/majority-element-ii) | | |
187+
| 229 | [Majority Element II](https://leetcode.com/problems/majority-element-ii) | [![Java](assets/java.png)](src/MajorityElementII.java) | |
188188
| 230 | [Kth Smallest Element in a BST](https://leetcode.com/problems/kth-smallest-element-in-a-bst) | | |
189189
| 231 | [Power of Two](https://leetcode.com/problems/power-of-two) | [![Java](assets/java.png)](src/PowerOf2.java) [![Python](assets/python.png)](python/is_power_of_2.py) | |
190190
| 232 | [Implement Queue Using Stacks](https://leetcode.com/problems/implement-queue-using-stacks) | [![Java](assets/java.png)](src/MyQueue.java) [![Python](assets/python.png)](python/implement_queue_using_stacks.py) | |

src/MajorityElementII.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// https://leetcode.com/problems/majority-element-ii
2+
// T: O(N)
3+
// S: O(1)
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class MajorityElementII {
9+
public List<Integer> majorityElement(int[] nums) {
10+
int candidate1 = 0, candidate2 = 0, frequency1 = 0, frequency2 = 0;
11+
for (int element : nums) {
12+
if (element == candidate1) frequency1++;
13+
else if (element == candidate2) frequency2++;
14+
else if (frequency1 == 0) {
15+
candidate1 = element;
16+
frequency1 = 1;
17+
} else if (frequency2 == 0) {
18+
candidate2 = element;
19+
frequency2 = 1;
20+
} else {
21+
frequency1--;
22+
frequency2--;
23+
}
24+
}
25+
return confirmCandidates(nums, candidate1, candidate2);
26+
}
27+
28+
private List<Integer> confirmCandidates(int[] array, int candidate1, int candidate2) {
29+
final List<Integer> result = new ArrayList<>();
30+
if (frequency(array, candidate1) > array.length / 3) result.add(candidate1);
31+
if (candidate2 != candidate1 && frequency(array, candidate2) > array.length / 3) result.add(candidate2);
32+
return result;
33+
}
34+
35+
private int frequency(int[] array, int val) {
36+
int count = 0;
37+
for (int element : array) {
38+
if (element == val) count++;
39+
}
40+
return count;
41+
}
42+
}

0 commit comments

Comments
 (0)