[LeetCode80]Remove Duplicates from Sorted List II
2014-05-28 01:21
330 查看
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given
Given
Analysis
The idea is same with the Question 79 Remove Duplicates from Sorted List.
Difference is there needs a safe head and flag to record whether former is duplicate
java
用JUnit 单元测试
For example,
Given
1->2->3->3->4->4->5, return
1->2->5.
Given
1->1->1->2->3, return
2->3.
Analysis
The idea is same with the Question 79 Remove Duplicates from Sorted List.
Difference is there needs a safe head and flag to record whether former is duplicate
java
public ListNode deleteDuplicates(ListNode head) { if(head == null || head.next == null) return head; ListNode newHead = new ListNode(-1); newHead.next = head; ListNode p1 = newHead; ListNode p2 = head; while(p2!=null){ boolean dup = false; while(p2.next!=null && p2.val == p2.next.val){ dup = true; p2 = p2.next; } if(dup){ p2 = p2.next; continue; } p1.next = p2; p1 = p1.next; p2 = p2.next; } p1.next = p2; return newHead.next; }c++
ListNode *deleteDuplicates(ListNode *head) { if(head == NULL || head->next == NULL){ return head; } ListNode *p = new ListNode(-1); p->next = head; ListNode *cur = p, *pre = head; while(pre != NULL){ bool isDupli = false; while(pre->next != NULL && pre->val == pre->next->val){ isDupli = true; pre = pre->next; } if(isDupli){ pre = pre->next; continue; } cur->next = pre; cur = cur->next; pre = pre->next; } cur->next = pre; return p->next; }
用JUnit 单元测试
@Test public void test() { //new linked list ListNode head = new ListNode(1); ListNode l1 = new ListNode(1); ListNode l2 = new ListNode(1); ListNode l3 = new ListNode(2); ListNode l4 = new ListNode(3); //link nodes head.next = l1; l1.next = l2; l2.next = l3; l3.next = l4; l4.next = null; //pass link list to method RemoveDuplicateFromSortedList reList = new RemoveDuplicateFromSortedList(); reList.deleteDuplicates2(head); }
相关文章推荐
- LeetCode 26, 80, 81, 82, . Remove Duplicates from Sorted Array/ List i, ii
- LeetCode-Remove Duplicates from Sorted List II
- leetcode 38: Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- leetcode Remove Duplicates from Sorted List I && II
- LeetCode: Remove Duplicates from Sorted List II
- LeetCode: Remove Duplicates from Sorted List II
- [leetcode] Remove Duplicates from Sorted List II
- LeetCode | Remove Duplicates from Sorted List II
- LeetCode - Remove Duplicates from Sorted List II
- LeetCode-Remove Duplicates from Sorted List II
- [Leetcode 30] 80 Remove Duplicates From Sorted Array II
- LeetCode: Remove Duplicates from Sorted List II
- leetcode -- Remove Duplicates from Sorted List II
- [LeetCode] Remove Duplicates from Sorted List II, Solution
- [面试真题] LeetCode:Remove Duplicates from Sorted List I & II
- [LeetCode]Remove Duplicates from Sorted List II
- [leetcode刷题系列]Remove Duplicates from Sorted List II
- LeetCode 82: Remove Duplicates from Sorted List II
- [Leetcode] Remove Duplicates from Sorted List II