나는 정수 배열을 가지고 있으며 같은 정수 값을 가진 하나 이상의 요소가 있습니다. 다른 정수 중에서 대다수의 정수 값을 식별하고 싶습니다. 이것이 어떻게 완성 된 것입니까?자바의 배열에서 다수 멤버를 식별하는 방법
-1
A
답변
2
"최적"솔루션을 찾고있는 경우 확실하지 않지만 아래 코드는 작동합니다.
방법 :
public static Integer majority(int[] array) {
Map<Integer, Integer> count = new HashMap<Integer, Integer>();
for (int number : array) {
if (count.containsKey(number)) {
count.put(number, count.get(number) + 1);
} else {
count.put(number, 1);
}
}
Integer majority = null;
Integer majorityCount = null;
for (Integer key : count.keySet()) {
if (count.get(key) > array.length/2) {
majority = key;
majorityCount = count.get(key);
}
}
return majority;
}
여기 테스트 주자 :
public static void main(String[] args) {
int[] array = {0, 1, 3, 4, 2, 1, 0, 0, 0, 10, 10, 0, 0};
int[] array1 = {0, 1, 3, 4, 2, 1, 0, 0, 0, 0, 0};
System.out.println(majority(array));
System.out.println(majority(array1));
}
그리고 출력
null
0
나는 이것이 당신이 찾고있는 무엇인가를 바란다.
1
아래 코드는 대부분의 정수가 무엇이며 배열에 나타난 횟수를 알려줍니다. 분명히 내가 물어 보지 않았기 때문에 솔루션을 최적화하는 것을 보지 못했다.
int array[] = new int[10];
array[0] = 0;
array[1] = 9;
array[2] = 1;
array[3] = 2;
array[4] = 3;
array[5] = 6;
array[6] = 7;
array[7] = 8;
array[8] = 5;
array[9] = 4;
HashMap map = new HashMap();
int majorInt = 0;
int maxCounter = 0;
boolean majorIntFound = false;
for (int i = 0; i < array.length; i++) {
Integer counter = (Integer) map.get(array[i]);
if (counter != null) {
majorIntFound = true;
int counterInt = counter.intValue();
map.put(array[i], ++counterInt);
if (counterInt > maxCounter) {
maxCounter = counterInt;
majorInt = array[i];
}
} else {
map.put(array[i], new Integer(1));
}
}
if (majorIntFound)
System.out.println(" Majority int is: " + majorInt + " counter: " + maxCounter);
else
System.out.println("No majority Int");
0
나는 당신이 뭔가를 원합니까?
import java.util.Random;
public class Majority{
public static void main(String [] args){
int [] random = new int[100];
Random r = new Random();
for (int i : random){
int j = r.nextInt(21);
random[i] = j;
}
int majority = 0, currentCount = 0, highestCount = 0;
for (int i : random){
for (int j : random){
if(random[i] == random[j])
currentCount++;
}
if(currentCount > highestCount){
majority = random[i];
highestCount = currentCount;
}
}
System.out.print("The majority number is: " + majority);
}
}
+0
내 코드는 다수 요소가 아니라 대부분 발생하는 숫자를 계산합니다. 영업 이익은 다수를 정의하지 않았으므로 나는 그것이 무엇인지에 대해 착각했습니다. 이는 생각보다 절반 만에 발생하는 요소입니다. – ChrisWilson4
관련 문제
- 1. 자바의 문자열 배열에서 숫자 분할
- 2. 자바의 배열에서 null 요소를 제거하십시오.
- 3. 편도 다수 - 다수
- 4. 자바의 배열에서 일치하는 속성의 합계를 계산하십시오.
- 5. 자바의 2 차원 배열에서 값의 위치 찾기
- 6. 자바의 바이트 배열에서 .wav 파일 쓰기
- 7. 자바의 객체 배열에서 단일 속성의 배열을 반환
- 8. EF 다수 다수 관계 순환로드
- 9. 대 다수 대 다수 관계
- 10. Eclipse가 자바의 개요보기에서 비공개 멤버를 숨기는 이유는 무엇입니까?
- 11. 정적 멤버를 초기화하는 방법
- 12. 멤버를 반품하는 올바른 방법
- 13. 자바에서 첫 번째 트랜잭션을 식별하는 방법
- 14. 엔티티 프레임 워크 업데이트 다수 대 다수
- 15. EF LINQ 쿼리 - 다수 대 다수
- 16. 데이터베이스 관계 ER 모델의 다수 다수 To
- 17. Codeigniter Datamapper 다수 대 다수 목록
- 18. 레일즈 다수 대 다수 필터 모델
- 19. 엔티티 프레임 워크 6 다수 대 다수 삽입 업데이트
- 20. 자바의 요일을 찾는 방법
- 21. 외 다수
- 22. Eclipse가 키워드를 식별하는 방법
- 23. EXE가 WPF인지 식별하는 방법
- 24. IOS에서 사용자를 식별하는 방법
- 25. 액티비티에서 RelativeLayout을 식별하는 방법
- 26. UIWebView를 Safari로 식별하는 방법
- 27. 엔티티의 수량을 식별하는 방법
- 28. 계정 유형을 식별하는 방법
- 29. HttpWebRequest : 브라우저로 식별하는 방법?
- 30. 현재 페이지로드를 식별하는 방법
다수의 정수를 정의하십시오. 그 숫자가 다른 어떤 것보다 더 많이 발견 되었습니까? 아니면 정수 ** ** 함께 ** 모든 다른 걸릴 **보다 더 많은 시간을 찾을 수 ** –
[선형 시간 대다수 알고리즘의 가능한 중복?] (http://stackoverflow.com/questions/4280450/linear-time-majority-algorithm) – amit
아, 알겠습니다. 무시합니다. – 75inchpianist