인접 한 중복 요소 삭제

778 단어 알고리즘
숫자 배열 을 지정 하고 인접 한 중복 숫자 를 삭제 합 니 다. 결과 배열 에는 인접 한 중복 배열 이 있 을 수 없습니다.예: 입력: 1, 5, 6, 8, 8, 0, 1, 1, 0, 6, 5 출력: 1 입력: 1, 9, 6, 8, 8, 0, 1, 0, 6, 5 출력: 1, 9, 5
사상: 이 문제 의 해결 방법 은 '현지 창고' 라 는 개념 을 사용한다.이 배열 을 창고 로 사용 하 는 것 입 니 다.스 택 에 있 는 요소 가 현재 숫자 와 같 지 않 을 때 현재 숫자 를 스 택 에 넣 는 것 입 니 다.현재 숫자 가 스 택 상단 요소 와 같 으 면 이 숫자 를 건 너 뛰 고 스 택 상단 요소 와 다른 숫자 를 찾 고 스 택 상단 요 소 를 삭제 하 는 것 을 알 수 있 습 니 다.
시간 복잡 도: O (n), 공간 복잡 도 O (n), 스 택 공간의 비용 에 사용 합 니 다.
알고리즘:
public static int removeAdjacentDuplicates(int[] a){
		int s = -1;
		int i = 0;
		
		while(i < a.length) {
			if(s == -1 || a[s] != a[i]) {
				a[++s] = a[i];
				i++;
			} else {
				while(i < a.length && a[i] == a[s]) {
					i++;
				}
			s--;
			}	
		}		
		return s;
}

좋은 웹페이지 즐겨찾기