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
.
分析:和Remove Duplicated from Sorted Array类似。运行时间19ms
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 || !(head->next)) return head; 13 14 ListNode *temp = head; 15 ListNode *newHead = head; 16 17 while(temp->next){ 18 if(temp->val != temp->next->val){ 19 head->next = temp->next; 20 head = head->next; 21 } 22 temp = temp->next; 23 } 24 head->next = NULL; 25 return newHead; 26 } 27 };
Runtime: 16ms
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 || !head->next) return head; 13 14 ListNode* temp = head; 15 while(temp->next){ 16 if(temp->val == temp->next->val) 17 temp->next = temp->next->next; 18 else 19 temp = temp->next; 20 } 21 return head; 22 } 23 };