지정된 Array nums = [1,1,2]는, 함수 (2)의 새로운 길이 원래 배열 돌려 nums 처음 두 요소가 수정된다1
,2
. 당신은 새로운 배열의 길이 뒤의 요소를 넘어 고려해야 할 필요가 없습니다.
================================
등의 주제에 대한 유용한 정보를 추출, 순서 배열, 우리는 이중 사용을 생각한다 포인터 처리가 수행되고,
우리는 반복 요소를 이동해야하고 운전 덮는 별개의 요소 발생
해결 1.
1 공용 정적 INT의 removeRepeat ( INT [] 배열) { 2 INT LEN = 사항 Array.length; 3 INT의 온도 = 0 ; (4) (5) 의 경우 (LEN == 0 ) { 6 복귀 0 ; 7 } 다른 { 8 대 ( INT I = 0; I <LEN; I ++ ) { 9 경우 (배열 [임시]! = 배열 [I]) { 10 어레이 [++ 온도 = 배열 [I]; 11 } 12 13 } 14 15 복귀 온도 + 1 ; 16 17 } 18 19 20 21 }
당신은 중복 제거 효과를 재생할 수 있도록 커버 대신, 우리 대하여 반복 데이터 위에, I, 저장 - 2 중복은 [I]는 어레이에 맵을 이용하여 동작 될 수있다
스토리지 시퀀스의 LinkedHashMap하는 메모리를 사용할 필요가 있으므로 참고 HashMap의 비 순차 저장 우리는 어레이의 규칙적 배열을 보장하기 위해 필요
이 구현은 결과가 자신의 첫 번째 문제 해결 방안, 한 번 더 생각 나쁜 생각이 무엇이든, 느린 조금이다
1 공용 정적 INT의 removeDuplicates ( INT []를 nums) { 2 의 LinkedHashMap <정수 정수> = 해시 맵 새로운 의 LinkedHashMap <> (); 3 대 ( INT I = 0; I <nums.length; 내가 ++ ) { 4 hashMap.put (nums [I], I); 5 } 6 INT의 인덱스 = 0 ; 7 대 (의 Map.Entry <정수 정수> 항목 : hashMap.entrySet ()) { 8 정수 키 = entry.getKey (); 9 [인덱스] = nums 키; (10) 인덱스 ++ ; 11 } 12 리턴 인덱스; 13 }