LC 169. Majority Element 分析、记录

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 七月十四,旧金山, 晴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值