English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
문제 설명
정렬된 배열을 주어지면, 배열에서 중복된 요소를 제거하고, 중복된 요소를 하나만 유지하고 새로운 배열 길이를 반환합니다.
요구사항:
배열에 추가적인 공간을 할당하지 마시고, 상수 메모리 크기를 사용하여 원소위치를 변경해야 합니다.
예를 들어:
주어진 배열 A=[1,1,2]가 되어야 합니다. 함수 호출 후에도 반드시 길이 length=을 반환해야 합니다.2하고, A는 [1,2]。
입력
이미 정렬된 배열, 예를 들어, [1,1,2]。
출력
새로운 배열 길이를 반환합니다. 예를 들어, length=2。
빠른-느리운 포인터 방법
fast 포인터를 배열을 순회하는 것을 설정하고, slow 포인터는 중복되지 않는 요소의 다음 위치를 가리킵니다.
public static int removeDuplicates(int[] nums) { if (nums.length < 1) return nums.length; int slow = 1; for (int fast = 1; fast < nums.length; fast++) { if (nums[fast] != nums[slow - 1]) { nums[slow++] = nums[fast]; } } return slow; }
애니메이션 설명:
확장
정렬된 배열에서 중복 요소를 제거하고, 지정된 자릿수를 유지합니다.
public static int removeDuplicatesN(int[] nums, int repeatN) { if (nums.length <= repeatN) return nums.length; int index = repeatN; for (int i = repeatN; i < nums.length; i++) { if (nums[i] != nums[index - repeatN]) { nums[index++] = nums[i]; } } return index; }
이것이 이 문서의 전체 내용입니다. 많은 도움이 되길 바랍니다. 또한, 나아가教程을 많이 지지해 주시기 바랍니다.
선언: 이 문서의 내용은 인터넷에서 가져온 것이며, 저작권자는 모두에게 있습니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 있으면, 이메일을 보내 주시기 바랍니다: notice#oldtoolbag.com(보고할 때는 #을 @으로 변경하십시오. 관련 증거를 제공하고, 사실이 확인되면, 이 사이트는 즉시 저작권 침해 내용을 삭제합니다。)