📖 Scenario: Imagine you have a list of votes from a group of people choosing their favorite fruit. You want to find out which fruit got more than half of the votes, if any.
🎯 Goal: Build a program that uses Moore's Voting Algorithm to find the majority element (fruit) in a list of votes.
📋 What You'll Learn
Create an array called votes with the exact values: ['apple', 'banana', 'apple', 'apple', 'orange', 'banana', 'apple']
Create a variable called candidate and set it to null
Create a variable called count and set it to 0
Use a for loop with variable vote to iterate over votes
Inside the loop, implement Moore's Voting Algorithm logic to update candidate and count
Print the final majority element stored in candidate
💡 Why This Matters
🌍 Real World
Moore's Voting Algorithm is useful in situations like finding the most popular choice in surveys, detecting dominant signals in data streams, or identifying frequent items in large datasets.
💼 Career
Understanding this algorithm helps in roles involving data analysis, software development, and algorithm design where efficient majority detection is needed.
Progress0 / 4 steps
1
Create the votes array
Create an array called votes with these exact values: ['apple', 'banana', 'apple', 'apple', 'orange', 'banana', 'apple']
DSA Javascript
Hint
Use const votes = [...] to create the array with the exact fruits.
2
Initialize candidate and count
Create a variable called candidate and set it to null. Create a variable called count and set it to 0.
DSA Javascript
Hint
Use let candidate = null; and let count = 0; to set up the variables.
3
Implement Moore's Voting Algorithm loop
Use a for loop with variable vote to iterate over votes. Inside the loop, if count is 0, set candidate to vote. If vote equals candidate, increment count by 1, else decrement count by 1.
DSA Javascript
Hint
Use the loop and conditions exactly as described to update candidate and count.
4
Print the majority element
Print the value of candidate using console.log(candidate).
DSA Javascript
Hint
Use console.log(candidate) to show the majority fruit.
Practice
(1/5)
1. What is the main purpose of Moore's Voting Algorithm in arrays?
easy
A. To find the element that appears more than half the time
B. To sort the array in ascending order
C. To find the smallest element in the array
D. To reverse the array elements
Solution
Step 1: Understand the problem Moore's Voting Algorithm solves
It is designed to find the majority element, which is the element that appears more than half the times in the array.
Step 2: Compare with other options
Sorting, finding smallest, or reversing are unrelated to majority element detection.
Final Answer:
To find the element that appears more than half the time -> Option A
Quick Check:
Majority element = element appearing > n/2 times [OK]
Hint: Majority element appears more than half the array length [OK]
Common Mistakes:
Confusing majority element with most frequent element
Thinking it sorts the array
Assuming it finds smallest or largest element
2. Which of the following is the correct initialization step in Moore's Voting Algorithm in JavaScript?
easy
A. let count = 1, candidate = 0;
B. let count = 0, candidate = null;
C. let candidate = 0, count = null;
D. let count = null, candidate = 1;
Solution
Step 1: Identify correct variable initialization
Moore's Voting Algorithm starts with count = 0 and candidate = null (or undefined) to indicate no candidate chosen yet.
Step 2: Check other options for correctness
Options A, C, and D initialize count or candidate incorrectly, which can cause logic errors.
Final Answer:
let count = 0, candidate = null; -> Option B
Quick Check:
Initialize count=0 and candidate=null [OK]
Hint: Start count at 0 and candidate as null before loop [OK]
Common Mistakes:
Starting count at 1 instead of 0
Assigning candidate a number before selection
Swapping count and candidate initialization
3. What will be the output of the following JavaScript code?
function majorityElement(nums) {
let count = 0, candidate = null;
for (const num of nums) {
if (count === 0) candidate = num;
count += (num === candidate) ? 1 : -1;
}
return candidate;
}
console.log(majorityElement([2,2,1,1,1,2,2]));
medium
A. Error
B. 1
C. null
D. 2
Solution
Step 1: Trace the loop and candidate updates
Initial count=0, candidate=null. Iteration updates candidate and count as follows: - num=2: count=0, candidate=2, count=1 - num=2: count=1, same candidate, count=2 - num=1: count=2, different candidate, count=1 - num=1: count=1, different candidate, count=0 - num=1: count=0, candidate=1, count=1 - num=2: count=1, different candidate, count=0 - num=2: count=0, candidate=2, count=1
Step 2: Final candidate after loop
The candidate is 2 after the loop ends, which is the majority element.
Final Answer:
2 -> Option D
Quick Check:
Majority element found = 2 [OK]
Hint: Track count changes; candidate updates when count hits zero [OK]
Common Mistakes:
Assuming candidate never changes
Confusing count increments and decrements
Returning count instead of candidate
4. Identify the bug in this Moore's Voting Algorithm implementation:
function majorityElement(nums) {
let count = 1, candidate = nums[0];
for (let i = 1; i < nums.length; i++) {
if (nums[i] === candidate) {
count++;
} else {
count--;
if (count === 0) {
candidate = nums[i];
count = 1;
}
}
}
return candidate;
}
medium
A. Initialization of count should be 0, not 1
B. Candidate should be initialized to null, not nums[0]
C. No bug, code is correct
D. Loop should start from i = 0, not i = 1
Solution
Step 1: Analyze initialization and loop
Starting count at 1 and candidate as nums[0] is a valid approach. Loop starts at i=1 to compare remaining elements.
Step 2: Check logic inside loop
Count increments if current equals candidate, else decrements. When count hits zero, candidate updates and count resets to 1. This matches Moore's Voting Algorithm logic.
Final Answer:
No bug, code is correct -> Option C
Quick Check:
Initialization and loop logic correct [OK]
Hint: Starting count=1 with first element candidate is valid [OK]
Common Mistakes:
Thinking count must start at 0
Assuming candidate must be null initially
Starting loop at wrong index
5. Given an array where no element appears more than half the time, what will Moore's Voting Algorithm return? Example: [1, 2, 3, 4]
The algorithm assumes a majority element exists (appears more than half the time). If none exists, it still returns a candidate but it may not be a true majority.
Step 2: Analyze example array [1, 2, 3, 4]
No element appears more than 2 times (half of 4). The algorithm will return a candidate but it is not a valid majority element.
Final Answer:
An incorrect majority element -> Option A
Quick Check:
No majority means algorithm returns wrong candidate [OK]
Hint: Algorithm assumes majority exists; else result may be wrong [OK]
Common Mistakes:
Assuming algorithm returns null if no majority
Thinking it returns highest frequency element always
Believing it returns first element by default
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.