牛客网刷题之数组中出现次数超过一半的数字

来源:互联网 发布:康熙字典体 mac 编辑:程序博客网 时间:2024/06/04 01:24

题目描述:

这里写图片描述

解题思路:

   因为题目要求指定的数出现的次数大于数组长度的一半,所以该数从第一次出现开始count加1,如果往后的数不等于该数就count减1,如果存在该数,最终结果必定是大于1的。

题解:

public int MoreThanHalfNum_Solution(int[] array) {        if (array.length == 0) {            return 0;        }        int num = array[0];        int count = 1;        for (int i = 1; i < array.length; ++i) {            if (array[i] == num) {                count++;            } else {                count--;            }            if (count == 0) {                num = array[i];                count = 1;            }        }        count = 0;        for (int i = 0; i < array.length; ++i) {            if (array[i] == num) {                count++;            }        }        if (count > array.length / 2) {            return num;        } else {            return 0;        }    }

ac结果:

这里写图片描述

0 0
原创粉丝点击