배열에서 중복 제거 알고리즘 최적화
제공된 코드는 Set과 같은 내장 도구를 사용하지 않고 배열에서 중복 값을 제거하는 것을 목표로 합니다. 또는 반복자. 그러나 많은 수의 요소를 처리할 때 성능 병목 현상이 발생합니다. 이 문제는 각 요소가 모든 후속 요소와 비교되는 중첩 루프 구조에서 발생합니다.
알고리즘의 효율성을 높이려면 다음 최적화 전략을 고려하세요.
HashSet:
작업에서 Set 또는 HashSet 사용을 명시적으로 금지하지만 HashSet이 다음을 제공한다는 점은 주목할 가치가 있습니다. 중복을 제거하기 위한 효율적인 솔루션입니다. 구현에서는 해시 테이블을 사용하여 각 요소의 존재를 추적하므로 지속적인 조회 및 삽입이 가능합니다.
Set<Integer> uniqueValues = new HashSet<>(); for (int num : arr) { uniqueValues.add(num); }
결과로 생성되는 고유 값 세트에는 고유한 요소만 포함됩니다.
요소 순서 유지:
요소의 원래 순서를 유지하는 것이 중요한 경우 제공된 버전의 수정된 버전 알고리즘을 사용할 수 있습니다:
// Create a boolean array to track duplicates boolean[] duplicates = new boolean[arr.length]; // Find and mark duplicates in the first iteration for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length; j++) { if (arr[i] == arr[j]) { duplicates[j] = true; } } } // Create a new array to store unique values int[] uniqueArr = new int[arr.length - duplicates.length]; int uniqueIndex = 0; // Copy unique values into the new array for (int i = 0; i < arr.length; i++) { if (!duplicates[i]) { uniqueArr[uniqueIndex++] = arr[i]; } } return uniqueArr;
이 알고리즘은 원래 요소 순서를 유지하면서 O(n²) 시간 복잡도를 달성합니다.
위 내용은 내장된 설정 기능을 사용하지 않고 대형 어레이에 대한 중복 제거 알고리즘을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!