링크 에서 중복 되 는 요 소 를 삭제 합 니 다.

제목 설명: 정렬 링크 를 지정 하고 중복 숫자 가 있 는 모든 노드 를 삭제 하 며 원본 링크 에 중복 되 지 않 은 숫자 만 유지 합 니 다.샘플: 입력: 1 - > 2 - > 3 - > 3 - > 4 - > 4 - > 5 출력: 1 - > 2 - > 5 분석: 처음부터 이 링크 를 옮 겨 다 니 며 현재 노드 의 값 이 다음 노드 의 값 과 같 으 면 중복 되 는 노드 이 고 모두 삭 제 됩 니 다.따라서 중복 노드 를 삭제 한 후의 링크 가 연결 되도록 하기 위해 서 우 리 는 이 노드 의 이전 노드 의 next 지침 을 현재 노드 의 값 보다 큰 노드 를 가리 키 려 고 합 니 다.중복 노드 가 머리, 꼬리, 중간 에 있 는 세 가지 상황 을 고려 해 야 한다.
public ListNode deleteDuplication(ListNode head) {
		ListNode newH=new ListNode(0);//    
		ListNode pre=newH;//         
		while(head!=null) {
			ListNode next=head.next;
			if(next!=null&&next.val==head.val) {
				int d=head.val;
				while(head!=null&&head.val==d)//            d
					head=head.next;
			}else {
				pre.next=head;
				pre=pre.next;
				head=next;
			}
			
		 }
		pre.next=null;
		return newH.next;   
	 }

좋은 웹페이지 즐겨찾기