首页 > 代码库 > [LeetCode] Remove Duplicates from Sorted List

[LeetCode] Remove Duplicates from Sorted List

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

思路一:

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *deleteDuplicates(ListNode *head) {12         if (head == NULL) return NULL;13         14         for (ListNode *prev = head; prev->next != NULL;) {15             ListNode *q = prev->next;16             if (prev->val == q->val) {17                 prev->next = q->next;18                 delete q;19             } else {20                 prev = prev->next;21             }22         }23         24         return head;25     }26 };

 

思路二:纯粹是练习二级指针的用法,和第一种没有太大区别

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *deleteDuplicates(ListNode *head) {12         if (head == NULL || head->next ==NULL) return head;13         14       for (ListNode **curr = &head; (*curr)->next != NULL; ) {15           ListNode *q = (*curr)->next;16           if ((*curr)->val == q->val) {17               (*curr)->next = q->next;18               delete q;19           } else {20               curr = &((*curr)->next);21           }22       }23       24       return head;25     }26 };

 

[LeetCode] Remove Duplicates from Sorted List