아래 사항이 귀하가 찾고있는 것일 수 있습니다. 기본적으로, 당신은 한 번만 정수 값과 배열을 occurrence.you 루프의 수와 같은 값으로 키를 사용하여지도를 작성하고 언제든지 숫자가 두 번 이상 발생, 당신은 수
public static void findCount (int[] array,int m, int n){
if(m>n){
thrown new IllegalArgumentException("m is greater than n");
}
Map<Integer,Integer> intCount = new HashMap<Integer,Integer>();
for(int i = 0; i<array.length; i++){
if (!intCount.containsKey(array[i])) intCount.put(array[i], 0);
intCount.put(array[i], intCount.get(array[i]) + 1);
}
for (Map.Entry<String,Integer> entry : words.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
if(value==m){
System.out.println("Value "+key+" Occurs "+value+" times");
}
}
}
"해시 테이블"이 포함 된 게시 된 솔루션은 시간 O (N * log2 (N/n)) 및 공간 O (N/n)을 필요로합니다. 더 나은 솔루션을 찾으면 솔루션을 게시 할 수 있습니까? – agershun
추가 질문 : 테이블의 정수는 순차적입니까 (이 예에서 [3,3,2,1,1]은 1에서 3까지입니다)? 이러한 유형의 경우 해시 테이블을 log2 (N/n) 대신 비용이 0 인 간단한 참조 배열로 대체 할 수 있습니다. – agershun
아니요 순차적이 아니라 매우 무작위입니다. – bozeng