LeetCodeはpythonで衆数を求める
1270 ワード
nの大きさの配列を与え,その中の衆数を見つけた.衆数とは、配列に現れる回数が
配列は空ではなく、与えられた配列は常に衆数が存在すると仮定することができます.
例1:
例2:
二、実現構想は、各数字の出現回数を算出し、辞書 に格納する.辞書を巡るlen(nums)/ より出現回数が大きいことを求める.
三、ソースコード
四、拡張
提出が完了して他の人のやり方を一目見たが、今は一歩でいい.
質問:与えられた配列は常に衆数が存在する.そして衆数はnums//2の出現回数である
⌊ n/2 ⌋
より大きい要素を指す.配列は空ではなく、与えられた配列は常に衆数が存在すると仮定することができます.
例1:
: [3,2,3]
: 3
例2:
: [2,2,1,1,1,2,2]
: 2
二、実現構想
三、ソースコード
# _*_ 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]