1. 程式人生 > >leet code Remove Duplicates from Sorted List 重複元素,只保留一個

leet code Remove Duplicates from Sorted List 重複元素,只保留一個

思路:

       連結串列常見的解決方案:快慢指標思路。

1.初始一個指標指向連結串列的第一個元素,一個指標指向連結串列的第二個元素,如果兩個元素相等,移動第二個元素,直到移動到與第一個指標指向的元素不相等的元素。讓第一個指標指向第二個指標的當前元素兩個指標同時後移。

public static void main(String[] args) {
		ListNode listNode1=new ListNode(1);
		ListNode listNode2=new ListNode(1);
		ListNode listNode3=new ListNode(2);
		ListNode listNode4=new ListNode(3);
		ListNode listNode5=new ListNode(3);
		listNode1.next=listNode2;
		listNode2.next=listNode3;
		listNode3.next=listNode4;
		listNode4.next=listNode5;
		ListNode listNode = deleteDuplicates(listNode1);
		while (listNode!=null){
			System.out.print(listNode.val+" ");
			listNode=listNode.next;
		}

	}

	public static ListNode deleteDuplicates(ListNode head) {

		if(head==null || head.next==null){
			return head;
		}
		ListNode head1=head;
		ListNode head2=head.next;
		while (head2!=null){
			if(head1.val==head2.val){
				head2=head2.next;
				if(head2==null){
					head1.next=null;
				}
			}else{
				head1.next=head2;
				head1=head1.next;
				head2=head2.next;
			}
		}
		return head;
	}
public class ListNode {

	int val;
	ListNode next;

	ListNode(int x) {
		val = x;
	}
}