算法题目一:如果数组中数字重复最多的次数大于数组长度的一半,返回1,否则返回0

来源:互联网 发布:淘宝怎么兴业扫码付款 编辑:程序博客网 时间:2024/06/06 03:13
public class TestOne {    public static void main(String[] args) {        int[] str = {5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,6,4,6,3,7};        System.out.println(solution(str));    }    public static int solution(int[] A){        int L = A.length;        Map<Integer,Integer> map = new HashMap<>();        for(int i = 0 ; i < L  ; i ++){            map.put(A[i],0);        }        int M = map.size();        int Amid = L / 2;        int i = 0;        int count = 0;        int[] B = new int[M];        int[] compirecounts = new int[M];        for(Integer key : map.keySet()){                B[i] = key;                i++;            }        for(int j = 0;j<M;j++){            count = 0;            for(int k = 0; k < A.length;k++){                if(B[j]==A[k]){                    count++;                }            }            compirecounts[j]=count;        }        if(getMax(compirecounts)>Amid){            return 1;        }else {            return -1;        }    }    public static int getMax(int[] A){        int max = Integer.MIN_VALUE;        for(int i = 0;i < A.length;i++){            if(A[i]>max) max=A[i];        }        return max;    }}

0 0