정렬 된 배열을 지정해, 각 요소가 제거 된 배열의 새 길이를 반환 한 후, 한 번만 나타납니다 그래서, 장소에 반복되는 요소를 제거해야합니다. 배열을위한 여분의 공간을 사용하지 마십시오, 당신은 장소에 입력 배열을 수정하고 사용 O (1) 여분의 공간의 조건을 완료해야합니다.

지정된 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      }

 

 

 

 

 





추천

출처www.cnblogs.com/doudou2018/p/12521353.html