python 面试题 17.10. 主要元素
地址:
https://leetcode-cn.com/problems/find-majority-element-lcci/
1 ''' 2 数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。 3 4 5 6 示例 1: 7 8 输入:[1,2,5,9,5,9,5,5,5] 9 输出:5 10 示例 2: 11 12 输入:[3,2] 13 输出:-1 14 示例 3: 15 16 输入:[2,2,1,1,1,2,2] 17 输出:2 18 19 20 21 22 23 24 25 解题: 26 1.计数 27 2.最大的数 28 3.判断最大的数是否超过半数,如果超过,取对应的key,否则取对应的value 29 ''' 30 31 class Solution: 32 def majorityElement(self, nums: List[int]) -> int: 33 l = len(nums) 34 numsDict ={} 35 for i in range(l): 36 if nums[i] not in numsDict.keys(): 37 numsDict[nums[i]] = 1 38 else: 39 numsDict[nums[i]] += 1 40 nMax = max(numsDict.values()) 41 return [k for k,v in numsDict.items() if v == nMax][0] if nMax*2>l else -1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-majority-element-lcci