0
点赞
收藏
分享

微信扫一扫

169. 多数元素

给定一个大小为 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的数只会有一个,不可能有两个........

举报

相关推荐

0 条评论