1.问题描述:
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
2.样例:
给出数组[1,1,1,1,2,2,2],返回 1。
3.代码:
class Solution:
"""
@param: nums: a list of integers
@return: find a majority number
"""
def majorityNumber(self, nums):
# write your code here
length=len(nums)
for i in range(int(length/2)+1):
count=1
for j in range(i+1,length):
if nums[i] == nums[j]:
count+=1
if count>length/2:
return nums[i]
这个方法比较传统朴素,利用两次循环,好理解,但是时间复杂度为O(n^2)。
介绍另外一种思路,只循环一次即可完成任务。主要思想是利用抵消的思路: