LeetCode82 去除排序連結串列中的重複元素2
阿新 • • 發佈:2018-12-19
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
遞迴和迭代:
public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; int val = head.val; ListNode p = head.next; if(head.val != p.val){ head.next = deleteDuplicates(p); return head; } else{ while(p != null && val == p.val) p = p.next; return deleteDuplicates(p); } } public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy; ListNode cur = head; while(cur != null){ while(cur.next != null && cur.next.val == cur.val){ cur = cur.next; } if(pre.next == cur){ pre = pre.next; cur = cur.next; }else{ pre.next = cur.next; cur = cur.next; } } return dummy.next; }