class Solution:
def majorityElement(self, nums):
d = dict()
for i in nums:
if i not in d.keys():
d[i] = 1
else:
d[i] += 1
indexs = list(d.values())
for j in indexs:
print(j)
if j>(len(nums) / 2):
return list(d.keys())[indexs.index(j)]
虽然可以通过,但是效率不高。
用分治思想,用递归方法实现:
class Solution(object):
def majorityElement(self, nums):
""" :type nums: List[int] :rtype: int """
# 【不断切分的终止条件】
if not nums:
return None
if len(nums) == 1:
return nums[0]
# 【准备数据,并将大问题拆分为小问题】
left = self.majorityElement(nums[:len(nums)//2])
right = self.majorityElement(nums[len(nums)//2:])
# 【处理子问题,得到子结果】
# 【对子结果进行合并 得到最终结果】
if left == right:
return left
if nums.count(left) > nums.count(right):
return left
else:
return right
对比可见,还是法一较好。