Given an array nums of size n, return the majority element.
The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.
Example 1:
Input: nums = [3,2,3]
Output: 3
Example 2:
Input: nums = [2,2,1,1,1,2,2]
Output: 2
Constraints:
n == nums.length
1 <= n <= 5 * 104
-231 <= nums[i] <= 231 - 1
Follow-up: Could you solve the problem in linear time and in O(1) space?
解释
找出出现次数超过一般的element。 非常简单。
两个approach
第一个approach:迭代所有element,将每个element出现的次数记录在hash map 里, hash[element] --> count_of_occurance. 迭代hash map 里面的所有items, 若item的value超过 input nums大小的一般, 则return该item 的key.
第二个approac:排列数组,return nums 中间的element.
python code(hash map approach)
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
hash = {}
for n in nums:
if n not in hash:
hash[n] = 1
else:
hash[n] += 1
ans = []
for item, count in hash.items():
if count > len(nums)/2:
ans.append(item)
return ans[0]
python code(第二 approach)
class Solution:
def majorityElement(self, nums):
nums.sort()
return nums[len(nums)//2]
2021 七月十四,旧金山, 晴