배열 은 무한 집합 S를 구성하는 항목으로 채워집니다 (S는 숫자 집합이 아니어야하며 순서 관계를 지정할 필요가 없습니다).) 어떤 항목이 배열 A에서 n/2 번 이상 나타나는지 확인하기 위해 O (n) 인 최악의 경우의 시간 복잡도 인 으로 알고리즘을 설명하십시오. 알고리즘이 정확하고 T (n) 은 실제로 O (n)입니다.항목이 배열 n/2 번 이상 나타납니다
-1
A
답변
1
이것은 두 단계 프로세스입니다.
- 배열에서 대부분의 시간 동안 발생하는 요소를 가져옵니다. 이 단계에서는 다수 요소가있는 경우에만이를 반환합니다.
- 위 단계에서 얻은 요소가 다수 요소인지 확인하십시오.
는 의사 코드 :
는findCandidate(a[], size)
1. Initialize index and count of majority element
maj_index = 0, count = 1
2. Loop for i = 1 to size – 1
(a) If a[maj_index] == a[i]
count++
(b) Else
count--;
(c) If count == 0
maj_index = i;
count = 1
3. Return a[maj_index]
확인 1 단계에서 얻은 요소는 대답은 그 어려운 일이 아니다 대부분
printMajority (a[], size)
1. Find the candidate for majority
2. If candidate is majority. i.e., appears more than n/2 times.
Print the candidate
3. Else
Print "NONE"
+0
고맙습니다. –
+0
이 알고리즘의 반복 관계는 어떻게됩니까? –
+0
@ShaimaaEbid, 재귀 알고리즘이 아니므로 반복 관계가 없습니다. 기본적으로 2 개의 루프이므로 O (n)입니다. – v78
관련 문제
- 1. 경고가 두 번 이상 나타납니다
- 2. Visual Studio 메뉴 항목이 여러 번 나타납니다.
- 3. Quickfixn - 거부가 두 번 이상 나타납니다.
- 4. 태그가 두 번 이상 나타납니다. QuickFix
- 5. FIX 메시지 태그가 두 번 이상 나타납니다
- 6. 데이터 항목이 3 번 이상 존재하는 경우에만 표시
- 7. 지원되지 않는 중복 항목이 계속 나타납니다
- 8. 사용하여 MySQL의 결과를 배열 한 번 이상
- 9. "signed in successfully"가 두 번 이상 나타납니다
- 10. 확인 상자가 아약스를 사용하여 두 번 이상 나타납니다.
- 11. 번 이상
- 12. 번 이상
- 13. 모든 PHP 드롭 다운 목록 항목이 "배열"로 나타납니다.
- 14. 항목이 데이터베이스 열에 두 번 이상 표시되는지 확인
- 15. 항목이 테이블에있을 때만 선택 postgres 3 번 이상
- 16. 카트에 항목이 없으면 경고가 나타납니다.
- 17. MVC3 쓰기 번 이상
- 18. mysql_real_escape 두 번 이상
- 19. 두 번 이상
- 20. PowerMock는 한 번 이상
- 21. preg_replace이다 - 3 번 이상
- 22. 항목이 특정 횟수 이상 사용되지 않도록하려면 어떻게해야합니까?
- 23. N2 MVC 컨트롤러 동작 캐싱?
- 24. 현지화 영어가 두 번 나타납니다
- 25. 카운트 기록이 나타납니다 몇 번
- 26. VB2010Express MessageBox가 여러 번 나타납니다.
- 27. Backorder 메시지가 두 번 나타납니다
- 28. R에 두 번 이상 세트에
- 29. 배열 목록에 값이 두 번 이상 포함되어 있는지 확인하십시오.
- 30. CUDA- 스레드의 인덱스를 사용하여 배열 요소에 두 번 이상 액세스
경우,이를 해결하기이어야 몇 가지 시도를 보여 . –