LeetCode_26. 정렬 된 배열에서 중복 제거

 

정렬 된 배열에서 26 제거 중복

쉬운

정렬 된 배열을 감안할 때  nums , 중복 제거  에서 현재 위치를  각 요소 만 표시하도록   과 새 길이를 반환합니다.

다른 배열을위한 여분의 공간을 할당하지 마십시오, 당신은 입력 배열 수정하여이 작업을 수행해야합니다  현재 위치에서  O (1) 추가 메모리를.

예 1 :

감안 nums의 = [1,1,2]는, 

함수는 길이 = 반환해야 2의 처음 두 요소, nums12각각. 

당신이 반환 된 길이 이상으로 떠날 중요하지 않습니다.

예 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을 리턴; 
	} 
}

 

추천

출처www.cnblogs.com/denggelin/p/11547139.html