题解 | #数组中超过一般的数字#

数组中出现次数超过一半的数字

http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        //初始化
        int num = array[0] ;//候选人
        int tik = 1 ;//票数
        for(int i = 1 ; i < array.length ;) {
            if(array[i] == num) {//投票
                tik ++ ;
                i ++ ;
            } else {
                tik -- ;//减票
                if(tik == 0) {//票为0
                    if(i+1 < array.length) {//还有候选人
                        num = array[i+1] ;//换候选人
                        tik = 1 ;//初始票
                        i+=2 ;//下一个投票起始处
                    } else {
                        return -1 ;//无候选人了,返回-1
                    }
                } else {//票不为0,继续投票
                    i++ ;
                }
            }
        }
        return num ;
    }
}

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务