思路
由於鏈表已經被排序好,只要設定好起點,用一個變數往前探索,
直到跟起點數值不同,隨後將起點跟變數相連即可。
程式碼
鏈表
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* tail = head; // 遍歷時用的變數
while(tail != nullptr) {
ListNode* explorer = tail; // explorer 會遍歷到數值不等於當前數字的時候
while(explorer != nullptr && explorer->val == tail->val) {
explorer = explorer->next;
}
// tail ~ explorer 之間的數字都相同,因此直接相連,消除重複元素
tail->next = explorer;
tail = tail->next;
}
return head;
}
};
複雜度分析
- 時間複雜度:
- 空間複雜度: