牛客网: BM51
题目: 数组中只有1个数字出现次数超过一半,找出这个数字
思路: 投票计数vote==0, 遍历数组,vote为0时,num赋值为当前值, num与当前值相等时,vote增加, 否则vote减小,只有1个数字出现次数超过一半,最终vote为正,同时num值即为对应的值。
代码:
// go
package main
// import "fmt"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @return int整型
*/
func MoreThanHalfNum_Solution( numbers []int ) int {
// write code here
vote := 0
num := -1
for _, v := range numbers {
if vote == 0 {
num = v
}
if num == v {
vote++
} else {
vote--
}
}
return num
}