天天看点

好未来:n个数里出现次数大于等于n/2的数

好未来:n个数里出现次数大于等于n/2的数

题目描述

输入n个整数,输出出现次数大于等于数组长度一半的数。

输入描述:

每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。

输出描述:

输出出现次数大于等于n/2的数。

示例1

输入

3 9 3 2 5 6 7 3 2 3 3 3

输出

3

思路:同《剑指Offer》 ​​数组中出现次数超过一半的数字​​

import java.util.*;


public class Main {

    // 不考虑【1,1,1,2,2,2】的情况
    public static int solution(String[] arr) {
        int num = Integer.parseInt(arr[0]);
        int count = 0;
        for(int i = 1; i < arr.length; i++) {
            int temp = Integer.parseInt(arr[i]);
            if(temp == num) {
                count++;
            }else if(count > 0) {
                count--;
            }else {
                num = temp;
            }
        }
        return num;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        String[] arr = line.split(" ");
        int result = solution(arr);
        System.out.println(result);
        sc.close();
    }
}