标签:
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
.
思路:如果当前的节点的值=下一个节点的值的话就一直删掉,注意细节,每次我们都只是确定了一个节点,所以pre.next每次都要置null。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) return head; ListNode cur = head; ListNode root = new ListNode(Integer.MAX_VALUE); ListNode pre = root; while (cur != null && cur.next != null) { if (cur.val == cur.next.val) { int v = cur.val; while (cur.val == v) { cur = cur.next; if (cur == null) return root.next; } } else { pre.next = cur; pre = pre.next; cur = cur.next; pre.next = null; } } pre.next = cur; return root.next; } }
LeetCode Remove Duplicates from Sorted List II
标签:
原文地址:http://blog.csdn.net/u011345136/article/details/44979991