질문 설명
정렬 된 배열이 주어지면 배열에서 중복 요소를 제거하고 하나의 중복 요소 만 유지하고 새 배열 길이를 반환하십시오.
필요하다:
추가 공간을 배열에 할당하지 마십시오. 상수의 메모리 크기를 사용하여 제자리에 작동해야합니다.
예를 들어:
배열 a = [1,1,2]가 주어지면 함수 호출은 길이 = 2를 반환해야하며 이제 [1,2]가됩니다.
입력하다
정렬 된 배열, 예를 들어 [1,1,2].
산출
배열의 새 길이 (예 : 길이 = 2)를 반환합니다.
빠르고 느린 포인터 방법
빠른 포인터를 설정하여 배열을 가로 지르고 비 반복 요소의 다음 비트로의 느린 포인터를 설정하십시오.
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]; }} 천천히 반환;}애니메이션 데모 :
펼친
정렬 된 배열에서 중복 요소를 제거하고 지정된 수의 숫자를 남깁니다.
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;}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.