剑指offer39 出现次数超过一半的数 Java

public class NumOverHalf39 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 2, 2, 2, 5, 4, 2};
        System.out.println(overhaf(arr));
    }

    private static int overhaf(int[] arr) {
        if (arr.length <= 0) {
            return -1;
        }
        int count = 1;
        int cur = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] == cur) {
                count++;
            } else {
                count--;
            }
            if (count == 0) {
                cur = arr[i];
                count++;
            }
        }
        count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (cur == arr[i]) {
                count++;
            }
        }
        if (count > arr.length/2)
            return cur;
        return -1;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43065507/article/details/99333598