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

来源:互联网 发布:tcpip网络层安全协议 编辑:程序博客网 时间:2024/05/21 04:39

好未来: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》 数组中出现次数超过一半的数字

这道题没有考虑这种情况【1、1、1、2、2、2】,1和2出现的次数都是数组长度的一半。当然,代码也AC了。

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();    }}

这里写图片描述

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