力扣刷题 面试题 17.10. 主要元素

面试题 17.10. 主要元素

方法1

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        for obj in set(nums):
            if nums.count(obj)>len(nums)/2:
                return obj
        return -1

方法2

          下面这个会超时,思路没问题,即遍历到一半都没有出现数量大于一半的数,那就不可能有这样的数了

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        for i in range(len(nums)//2+1):
            if nums.count(nums[i])>len(nums)/2:
                return nums[i]
        return -1

          原因是没有排除重复计算相同数字

方法3

          所以加一个记忆数组用于记录已遍历的元素

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        pre=[] #加一个已遍历数组
        for i in range(len(nums)//2+1):
            if nums[i] in pre:   #如果该数字已经遍历过就跳过,继续循环
                continue
            pre.append(nums[i])
            if nums.count(nums[i])>len(nums)/2:
                return nums[i]
        return -1
posted on 2021-06-11 09:12  雾恋过往  阅读(35)  评论(0)    收藏  举报

Live2D