题目链接: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 };