LC 多數元素
阿新 • • 發佈:2020-12-10
給定一個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列中出現次數大於⌊ n/2 ⌋的元素。
你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。
示例1:
輸入: [3,2,3]
輸出: 3
示例2:
輸入: [2,2,1,1,1,2,2]
輸出: 2
作者:力扣 (LeetCode)
連結:https://leetcode-cn.com/leetbook/read/top-interview-questions/xm77tm/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
1利用字典(遍歷計數)
class Solution: def majorityElement(self, nums: List[int]) -> int: l = len(nums) if l == 1: return nums[0] dic ={} for i in nums: if i not in dic.keys(): dic[i] = 1 else: dic[i] += 1 if(dic[i]>l/2): return i
2先排序(適用於給定的陣列總是存在多數元素,中位數即多數元素)
class Solution:
def majorityElement(self, nums: List[int]) -> int:
nums.sort()
return nums[len(nums)//2]
3投票法
class Solution: def majorityElement(self, nums: List[int]) -> int: count , candi = 0, 0 for i in nums: if i == candi: count += 1 else: if count == 0: candi = i count = 1 else: count -= 1 return candi