Finding the majority element seems easy… Just count frequencies, right? But that takes extra space. What if you could solve it in: O(n) time O(1) space That’s where Moore’s Voting Algorithm shines. Core Idea The algorithm works like cancelling votes. Different elements cancel each other Majority element survives Phase 1: Candidate Selection int candidate = 0, count = 0; for (int num : nums) { if (count == 0) { candidate = num; count = 1; } else if (num == candidate) { count++; } else { count--; } } Think of it as: Same element → increase count Different element → cancel Phase 2: Verification count = 0; for (int num : nums) { if (num == candidate) count++; } if (count > nums.length / 2) return candidate; return -1; Ensures candidate is actually majority Example Array: [3, 3, 4, 2, 3, 3, 3] Majority element = 3 The Real Insight Majority element can’t be fully cancelled Because it appears more than half the time.…