题目就不写了,给大家分析一下题眼8:
- 数组内某元素出现的次数要>数组长度/2
- 给定的数组总是存在多数元素,意思是数组有且仅有一个多数元素
其实这道题说白了就是找众数,而且测试用例还有一个特殊情况就是给定数组长度为1的数组,这个情况要考虑到。
官方给出了好几种解题方式,最后一种投票法很有灵性但是我没太撸清楚,不过不重要,我们小白学算法考虑的是找到一种解题的方式,等慢慢熟练了再去考虑优化的事情。
class Solution:
def majorityElement(self, nums: List[int]) -> int:
record={}
n = len(nums)
if n == 1:
return nums[0]
for i in nums:
if i not in record:
record[i] = 1
else:
record[i]+=1
if record[i] > n // 2:
return i
我本来想用哈希表,但是不知道怎么用python表示哈希表,就用字典代替了。