提問: 給定一個int型數(shù)組,找出該數(shù)組中出現(xiàn)次數(shù)大于數(shù)組長度一半的int值随静。
解決方案: 遍歷該數(shù)組枫疆,統(tǒng)計每個int值出現(xiàn)次數(shù)娇斑,再遍歷該數(shù)組,找出出現(xiàn)次數(shù)大于數(shù)組長度一半的int值吗铐。
兩種線性解法:
一種是放入一個哈希表中东亦,然后同數(shù)加一,
還有一種就是遍歷數(shù)組唬渗,然后發(fā)現(xiàn)相同就給maj
加一典阵,如果不同就減一,到0
就把結(jié)果換成變成0
的數(shù)镊逝,最后得到的數(shù)就是答案壮啊。
class Solution {
func majorityElement(_ nums: [Int]) -> Int {
var maj = 0
var num = nums[0]
for n in nums {
if num == n {
maj = maj + 1
} else {
if maj > 0 {
maj = maj - 1
} else {
num = n
}
}
}
return num
}
}