정렬 된 배열에서 26 제거 중복
쉬운
정렬 된 배열을 감안할 때 nums , 중복 제거 에서 현재 위치를 각 요소 만 표시하도록 번 과 새 길이를 반환합니다.
다른 배열을위한 여분의 공간을 할당하지 마십시오, 당신은 입력 배열 수정하여이 작업을 수행해야합니다 현재 위치에서 O (1) 추가 메모리를.
예 1 :
감안 nums의 = [1,1,2]는, 함수는 길이 = 반환해야2
의 처음 두 요소,nums
인1
및2
각각. 당신이 반환 된 길이 이상으로 떠날 중요하지 않습니다.
예 2 :
감안 nums의 =는 [0,0,1,1,1,2,2,3,3,4, 함수는 길이 = 반환해야5
처음 5 개 요소,nums
수정되고0
,1
,2
,3
, 및4
는 각각. 반환 된 길이 이상으로 설정 어떤 값 중요하지 않습니다.
설명:
혼란 반환 값이 정수하지만 당신의 대답은 배열 왜?
입력 어레이 입력 배열 변형뿐만 아니라 호출자에게 공지되어있을 것이다 의미 참조로 전달되어 있습니다.
내부적으로이 생각할 수 있습니다 :
// nums 참조로 전달된다. (즉, 복사본을 만들지 않고) INT 렌 = removeDuplicates (nums); // 함수의 nums에 대한 수정은 호출자에 의해 알 수있다. 함수에 의해 반환 된 길이를 사용하여 //, 그것은 첫 번째 LEN 요소를 인쇄합니다. {위해 (; 나는 LEN <I는 I = 0 ++ INT) 인쇄 (nums [I])를; }
패키지 leetcode; 공용 클래스 RemoveDuplicatesFromSortedArray { @ org.junit.Test 공개 무효 시험 () { INT [] nums1 = {1, 1, 2}; INT [] nums2 = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4}; 에서 System.out.println (removeDuplicates (nums1)); 에서 System.out.println (removeDuplicates (nums2)); } 공개 removeDuplicates INT (INT [] nums) { (nums.length가 == 0) {경우 0을 리턴; } I에서 INT = 0; 대 (INT의 J = 1; J <nums.length, J ++) { 경우 (nums [J] = nums [I]!) { I ++; nums [I] = nums의 [J] } } I + 1을 리턴; } }