題目
給定一個排序連結串列,刪除所有重複的元素只留下原連結串列中沒有重複的元素。 樣例 給出 1->2->3->3->4->4->5->null,返回 1->2->5->null 給出 1->1->1->2->3->null,返回 2->3->null
分析
注意的一點就是,找到一個要刪除的值時,用一個變數記錄這個值,然後逐個全部刪去值為這個值的節點
程式碼
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode head is the head of the linked list
* @return: ListNode head of the linked list
*/
public static ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null)
return head;
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 val = head.next.val;
while (head.next != null && head.next.val == val) {
head.next = head.next.next;
}
} else {
head = head.next;
}
}
return dummy.next;
}
}
複製程式碼