標籤:
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.
題意:
給出一個鏈表,刪除所有重複的結點。
步驟:
(1)定義一個新的頭結點,用來指向head,並將head向前移動一位。
1 -> 1 -> 1 -> 2 -> 3
變為 head -> 1 -> 1 -> 1 -> 2 -> 3
(2)遍曆各結點,每次比較兩個結點,head.next和head.next.next.
1. 如果head.next.val == head.next.next.val, 兩個結點的值相等,用temp記錄這個值,
從next開始依次遍曆刪除每個值為temp的結點,head.next = head.next.next.
2. 如果next和next.next的值不相等,繼續向後遍曆,head =head.next;
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null) return null; ListNode dummy = new ListNode(0); dummy.next = head; head = dummy; while(head.next != null && head.next.next != null){ if(head.next.val == head.next.next.val){ int temp = head.next.val; while(head.next != null && head.next.val == temp){ head.next = head.next.next; } }else{ head = head.next; } } return dummy.next; }}
leetcode 82. Remove Duplicates from Sorted List II