1. 程式人生 > >LeetCode169. Majority Element

LeetCode169. Majority Element

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

Example 1:

Input: [3,2,3]
Output: 3

Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2

<思路>最開始想用字典,統計每個數字出現次數。思路簡單,不過時間上來講比較慢。

import numpy as np
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        
        half = len(nums)/2
        dic = {}
        for num in nums:
            if num in dic:
                dic[num] +=1
            else:
                dic[num] = 1
        for key,val in dic.items():
            if val>half:
                return key

看discuss裡面有種取巧的方式,很聰明。將陣列排序,然後取中間的數,一行就可以。

import numpy as np
class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        return sorted(nums)[len(nums)/2]