在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5spa
C++:指針
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 }; 9 */ 10 class Solution { 11 public: 12 ListNode* deleteDuplication(ListNode* pHead) 13 { 14 if (pHead == NULL ||pHead->next == NULL) 15 return pHead ; 16 ListNode * pNext = pHead->next ; 17 if (pHead->val == pNext->val){ 18 while(pNext != NULL && pHead->val == pNext->val){ 19 pNext = pNext->next ; 20 } 21 return deleteDuplication(pNext) ; 22 }else{ 23 pHead->next = deleteDuplication(pNext) ; 24 return pHead ; 25 } 26 } 27 };