[LeetCode]Remove Duplicates from Sorted List II
2013-05-31 10:39
435 查看
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; class Solution { //three pointer, the previous valid pointer, the first pointer of these same elements, current pointer //always think twice about these edge cases public: ListNode *deleteDuplicates(ListNode *head) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode* preValid = NULL; ListNode* preSame = NULL; ListNode* cur = head; while (cur) { if(!preSame) preSame = cur; else if(cur->val != preSame->val && preSame->next == cur)//continuous different then preSame can be the preValid { if(!preValid) { head = preSame; preValid = preSame; } else { preValid->next = preSame; preValid = preSame; } preSame = cur; } else if (cur->val != preSame->val && preSame->next != cur)//not continuous different preSame = cur; cur = cur->next; } //4 special edge cases if(!preValid && preSame && preSame->next != NULL) return NULL; else if(!preValid && preSame && preSame->next == NULL) return preSame; else if(preValid && preSame->next != NULL) preValid->next = NULL; else if(preValid && preSame->next == NULL) preValid->next = preSame; return head; } };
second time
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *deleteDuplicates(ListNode *head) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummy(-1); ListNode* savePtr = &dummy; ListNode* cur = head; ListNode* prev = &dummy; while(cur != NULL) { if((prev == &dummy || prev->val != cur->val) && (cur->next == NULL || cur->next->val != cur->val)) { savePtr->next = cur; savePtr = savePtr->next; } prev = cur; cur = cur->next; } savePtr->next = NULL; return dummy.next; } };
相关文章推荐
- 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 I && II
- LeetCode-Remove Duplicates from Sorted List II
- Remove Duplicates from Sorted List II [LeetCode]
- Leetcode Remove Duplicates from Sorted List II
- leetcode-Remove Duplicates from Sorted List II
- LeetCode_Remove Duplicates from Sorted List II
- Remove Duplicates from Sorted List II -- LeetCode
- LeetCode | Remove Duplicates from Sorted List II
- leetcode 刷题之路 43 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
- Leetcode[82]-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 I && II
- LeetCode82 Remove Duplicates from Sorted List II