找出数组中次数超过n/2或n/3的数

题目描述

找出数组中出现次数超过n/2的数。

输入:

7
1 2 1 3 1 1 4

输出:

1

思路:

找出两个不相同的数消除,最终剩下的一定是超过一半的数。

代码:

import java.util.*;
public class Main {
    public static void main(String arg[]){
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            int n = in.nextInt();
            int nums[] = new int[n];
            for (int i=0; i

题目描述

找出数组中出现次数超过n/3的数,样例保证该数唯一。

输入:

7
1 2 1 3 1 2 4

输出:

1

思路:

当找到3个互不相同的数时进行消除,最终留下两个数,再遍历一遍看两个数出现的次数即可。

代码:

import java.util.*;
public class Main {
    public static void main(String arg[]){
        Scanner in = new Scanner(System.in);
        while (in.hasNext()){
            int n = in.nextInt();
            int nums[] = new int[n];
            for (int i=0; i n/3) res = a;
            else res = b;
            System.out.println(res);
        }
    }
}

你可能感兴趣的:(找出数组中次数超过n/2或n/3的数)