快速找出数组中元素数目超出一半的元素

来源:互联网 发布:java和数据挖掘 编辑:程序博客网 时间:2024/05/18 03:52

思路:在遍历数组的过程中,保存两个值,一个是数组中数字,一个是出现次数。当遍历到下一个数字时,如果这个数字跟之前保存的数字相同,则次数加1,如果不同,则次数减1。如果次数为0,则保存下一个数字并把次数设置为1,由于我们要找的数字出现的次数比其他所有数字出现的次数之和还要多,那么要找的数字肯定是最后一次把次数设为1时对应的数字。

 public int MoreHalf(int[] nums) {        int result = 0;        int count = 1;        if (nums.length == 0)            return -1;        result = nums[0];        for (int i = 1; i < nums.length; i++) {            if (count == 0) {                result = nums[i];                count = 1;                continue;            }            if (result == nums[i])                count++;            else                count--;        }        count = 0;            for (int i = 1; i < nums.length; i++) {                    if(result = nums[i])count++;                }                if(count > nums.length/2)                    return result ;                return 0;    }

阅读全文
0 0
原创粉丝点击