Set을 사용하지 않고 배열에서 중복 항목을 효율적으로 제거
배열에서 중복 요소를 제거하기 위한 맞춤형 솔루션을 만들기 위해 노력하셨습니다. 그러나 성능 병목 현상이 나타났습니다. 이 구현을 최적화하기 위해 우리는 접근 방식의 단점을 분석하고 대체 전략을 제안할 것입니다.
알고리즘 분석
알고리즘은 각 항목을 비교하여 중복 항목을 검색하려고 시도합니다. 모든 후속 요소와 요소. 이러한 철저한 비교로 인해 O(n^2) 시간 복잡도가 발생합니다. 대규모 어레이의 경우 이 전략은 매우 비효율적일 수 있습니다.
최적화된 접근 방식
성능을 크게 향상하려면 다음 최적화를 고려할 수 있습니다.
대체 솔루션
앞서 언급한 최적화를 통해 다음을 수행할 수 있습니다. 알고리즘 성능을 향상시키려면 다른 확립된 방법을 고려할 수도 있습니다. 기술:
구현
최적화된 접근 방식을 기반으로, 해시 맵을 활용하는 알고리즘의 수정된 버전은 다음과 같습니다.
public static int[] removeDuplicatesWithoutSet(int[] arr) { HashMap<Integer, Boolean> map = new HashMap<>(); int end = arr.length; for (int i = 0; i < end; i++) { if (map.containsKey(arr[i])) { int shiftLeft = i; for (int k = i + 1; k < end; k++, shiftLeft++) { arr[shiftLeft] = arr[k]; } end--; i--; } else { map.put(arr[i], true); } } int[] whitelist = new int[end]; for (int i = 0; i < end; i++) { whitelist[i] = arr[i]; } return whitelist; }
위 내용은 세트를 사용하지 않고 배열에서 중복 항목을 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!