巧妙地利用抵消的方法,实现多数的求解。
另外的方法就是构建一个字典,然后超过半数的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
}
本文介绍了一种使用抵消方法寻找数组中出现次数超过一半的元素的高效算法。该方法通过遍历数组,统计候选元素出现的次数来确定多数元素,实现了O(n)的时间复杂度和O(1)的空间复杂度。
94

被折叠的 条评论
为什么被折叠?



