【Leetcode】82. Remove Duplicates from Sorted List II
阿新 • • 發佈:2018-02-25
have from tco number question 一個數 example blog 出現
①設置一個新的頭結點newHead,以及一個pre結點一個cur結點。將pre初始化為newHead,在pre之後找到第一個不重復的結點,並將其賦值給pre.next。
②遞歸。找到第一個不重復的結點,將它的next結點遞歸。
代碼:
Question:
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
.
public ListNode deleteDuplicates1(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = new ListNode(-1); newHead.next= head; ListNode pre = newHead; ListNode cur = head; while (cur != null) { //找到第一個不重復的結點 while (cur.next != null && cur.val == cur.next.val) cur = cur.next; //當pre的next就是cur即兩者之間沒有重復數字,將pre指針後移即可。 if (pre.next == cur) { pre= cur; } else //否則 跳過cur 將pre的next設置成cur的next pre.next = cur.next; cur = cur.next; } return newHead.next; }
②:
public ListNode deleteDuplicates(ListNode head) { if (head == null) return null; if (head.next != null && head.val == head.next.val) { while (head.next != null && head.val == head.next.val) { head = head.next; } return deleteDuplicates(head.next); } else { head.next = deleteDuplicates(head.next); } return head; }
【Leetcode】82. Remove Duplicates from Sorted List II