给定一个大小为 n
的数组 nums
,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
示例 1:
输入:nums = [3,2,3]
输出:3
示例 2:
输入:nums = [2,2,1,1,1,2,2]
输出:2
这道题要找出现次数大于N/2的数,我就先对数组排序,从小到大,再用双指针,i指向一个数第一次出现的位置,j指向与i不同的数第一次出现的位置,j与i之间的距离就是i指向数字的出现次数,再判断是否大于n/2就行了。不过要注意的是最后相同的数,由于j最后指向的数可能与i相同,那就判断一下距离就行了,不过这里距离需要加一,类似1-5之间有几个数,5-1+1=5。
class Solution:
def majorityElement(self, nums: List[int]) -> int:
res = []
nums.sort()
i = 0
j = 0
while j < len(nums):
if nums[i] != nums[j]:
count = j - i
if count > (len(nums)/2):
res.append(nums[i])
i = j
j += 1
else:
j += 1
if j >= len(nums):
count = j-i
if count > (len(nums)/2):
res.append(nums[i])
return res[0]
我一开始还以为会有多个数就用列表来保存,没想到只有一个数。
看了答案,发现我是真的ben,要找出大于n/2的数只会有一个,不可能有两个........