LeetCodeはpythonで衆数を求める

1270 ワード

nの大きさの配列を与え,その中の衆数を見つけた.衆数とは、配列に現れる回数が⌊ n/2 ⌋より大きい要素を指す.
配列は空ではなく、与えられた配列は常に衆数が存在すると仮定することができます.
例1:
  : [3,2,3]
  : 3

例2:
  : [2,2,1,1,1,2,2]
  : 2

二、実現構想
  • は、各数字の出現回数を算出し、辞書
  • に格納する.
  • 辞書を巡るlen(nums)/
  • より出現回数が大きいことを求める.
    三、ソースコード
    # _*_ coding:utf-8 _*_
    '''
        @author:xianyt
        @date:2018/
        @func:
                n    ,       。               ⌊ n/2 ⌋    。
    
                   ,             。
    '''
    class Solution(object):
        def majorityElement(self, nums):
            """
            :type nums: List[int]
            :rtype: int
            """
            count = {}
            for i in nums:
                if i in count.keys():
                    count[i] += 1
                else:
                    count[i] = 1
            n = len(nums)/2
            for key,value in count.items():
                if value >= n:
                    return key
    if __name__ == "__main__":
        solu = Solution()
        print(solu.majorityElement([3,2,3]))
        print(solu.majorityElement([2,2,1,1,1,2,2]))
        

    四、拡張
    提出が完了して他の人のやり方を一目見たが、今は一歩でいい.
    質問:与えられた配列は常に衆数が存在する.そして衆数はnums//2の出現回数である
    return sorted(nums)[len(nums)/2]