题目链接: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次。

思路就是找到重复元素,删除即可。循环检测,如果两个连续节点的数字一样,删除一个重复的元素。

时间复杂度:O(n)

空间复杂度:O(1)

 1 class Solution 2 { 3 public: 4     ListNode *deleteDuplicates(ListNode *head) 5     { 6         ListNode *h = new ListNode(0); 7         h -> next = head; 8          9         for(ListNode *p = h; p -> next != NULL; p = p -> next)10             while(p -> next -> next != NULL && 11                   p -> next -> val == p -> next -> next -> val)12                 p -> next = p -> next -> next;13         14         return h -> next;15     }16 };