에서 모달 수를 찾기 :이 같은 배열을 배열
int[] array = { 2, 4, 6, 8, -3, 8, 2, 7, 2, 4 };
I (이 경우 물론 그 2) 가장 많은 시간을 표시하는 번호를 알고 싶어, 내가 어떻게 할 수 있습니까?
에서 모달 수를 찾기 :이 같은 배열을 배열
int[] array = { 2, 4, 6, 8, -3, 8, 2, 7, 2, 4 };
I (이 경우 물론 그 2) 가장 많은 시간을 표시하는 번호를 알고 싶어, 내가 어떻게 할 수 있습니까?
지도 매핑 int 수를 계산할 수 있습니다. Java에서는 HashMap<Integer, Integer>
과 같은 것입니다. 목록을 살펴보고 int가 이미지도에 있는지 확인하십시오. 그렇다면 숫자에 1을 더하고 그렇지 않으면 1로 초기화하십시오. 그 후에지도를 다시 방문하여 가장 많은 숫자가있는 번호를 찾으십시오.
빈도 분포를 생성하고 배열을 반복해야합니다. 정수를 사용함에 따라 키로 직접 사용할 수 있으므로 쉽게 사용할 수 있습니다.
HashTable frequencyDistribution = new HashTable();
for(int i=0; i<array.length; i++) {
int key = array[i];
if(!frequencyDistribution.containsKey(key)) frequencyDistribution.add(key, 0);
frequencyDistribution[ key ]++;
}
int modeKey;
int modeCnt = int.MIN;
foreach(int key in frequencyDistribution.keys) {
int cnt = frequencyDistribution[key];
if(cnt > modeCnt) modeKey = key;
}
print("Most frequent is: {0} as it appears {1} times.", modeKey, modeCnt);
나는 아래 코드는 자바 트릭을 할 것 같아요 8.
int[] array = { 2, 4, 6, 8, -3, 8, 2, 7, 2, 4 };
Arrays.stream(array).collect(Collectors.groupingBy(s -> s))
.forEach((k, v) -> System.out.println(k + ": " + v.size()));
인쇄 :
2: 3
4: 2
8: 2
6: 1
7: 1
-3: 1
'toString()'호출은 필요하지 않습니다. – VGR
@ VGR, thanks .. 게시물을 업데이트 할 예정입니다. – brunsgaard
다음 선형 모든 스캔 버킷을 사용하여 가장 자주 나타나는 숫자를 얻을 수 있습니다 (배열에서 최대 수를 얻는 방법을 알고 있습니까?). 기본 데이터 구조는 배열 (가장 빠름) 일 필요는 없지만 BIG 범위의 경우 메모리 제약으로 인해 배열을 사용할 수 없으며 속도가 느려지므로 키 - 값 메커니즘이있는 모든 것을 사용할 수 있습니다 시간을 실행.
는이 같은 알고리즘을 수행 할 수 있습니다
Map<Integer, Integer> frequencies = new HashMap<>();
for (int n : array) {
frequencies.put(n, frequencies.getOrDefault(n, 0) + 1); // Java 8
}
if (!frequencies.isEmpty()) {
Integer bestMatch = null;
Integer lastCount = null;
for (Map.Entry<Integer,Integer> entry : frequencies.entrySet()) {
Integer count = entry.getValue();
if (null == lastCount || count > lastCount) {
bestMatch = entry.getKey();
lastCount = count;
}
}
System.out.println("Most frequent value: " + bestMatch + " (found " + lastCount + " times)");
}
int []에서 Java라고 말하고 싶습니다. – NoDataFound