leet code Remove Duplicates from Sorted List 重複元素,只保留一個
阿新 • • 發佈:2018-12-03
思路:
連結串列常見的解決方案:快慢指標思路。
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;
}
}