巧妙地利用抵消的方法,实现多数的求解。
另外的方法就是构建一个字典,然后超过半数的key就是这个多数元素。这个空间复杂度是O(n),
而上面的方法是O(1)的空间复杂度,时间复杂度都是一样的O(n)。
func majorityElement(nums []int) int {
candidate, count := 0, 0
for _, v := range nums{
// 统计count为正数时,candidate超过半数,为0就需要继续找candidate
if count ==0 {
candidate = v
}
if v == candidate{
count++
}else{
count--
}
}
return candidate
}