題目描述:給一個(gè)排好序的鏈表,刪除其中的重復(fù)元素。如:
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3
分析:簡單的快慢指針應(yīng)用,時(shí)間復(fù)雜度O(n),空間O(1)。
代碼:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (!head) return head;
ListNode *pre = head, *cur;
for (cur = head -> next; cur; cur = cur -> next)
{
if (pre -> val == cur -> val)
{
pre -> next = cur -> next;
delete cur;
}
else
pre = cur;
}
return head;
}
};