剑指offer-JZ28数组中出现次数超过一半的数字

时间限制:C/C++ 1秒,其余语言2秒
空间限制:C/C++ 32M,其余语言64M
热度指数:576107
本题知识点: 数组javascript

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。因为数字2在数组中出现了5次,超过数组长度的一半,所以输出2。若是不存在则输出0。java

代码

function MoreThanHalfNum_Solution(numbers)
    {
        // write code here
        let temp = [], num;
        for(let i=0; i<numbers.length; i++){
            for(let j=0; j<numbers.length-i-1; j++){
                if(numbers[j]>numbers[j+1]){
                    temp = numbers[j];
                    numbers[j] = numbers[j+1];
                    numbers[j+1] = temp;
                }
            }
        }
        num = parseInt(numbers.length/2);
        for(let i=0; i<numbers.length; i++){
            if(numbers[i] === numbers[i+num]){
                return numbers[i];
            }
        }
        return 0;
    }

分析:
先用冒泡给数组排个序web