LeetCode 169: Majority Element
Difficulty: Easy
Tags: Array, Divide and Conquer, Bit Manipulation
问题描述
有一个非空的大小为n的数组,其中有一个元素出现了超过[n/2]次,找出这个元素。
解决方案
关于这个问题,需要想通一点:
在一个有Majority Element的数组中,移除2个不同的元素,在剩余的数组中Majority Element依然维持不变。
再细节一点,分成2种情况考虑:
▷ Majority Element在移除的2个不同元素中,那移除的2个元素一个是Majority Element一个不是,Majority Element在剩余的数组还是超过半数。
▷ Majority Element不在移除的2个不同元素中,显然Majority Element在剩余的数组中仍然超过半数。
Majority Element的定义还可以引申一下,引申为在数组中出现超过[n/k]次。那么数组移除k个不同的元素,在剩余的数组中Majority Element依然维持不变。
在本题中,k等于2。
▷ Time Complexity: O(n)
▷ Space Complexity: O(1)
1 | class Solution { |