链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci/
/**
* * Definition for singly-linked list.
* * struct ListNode {
* * int val;
* * ListNode *next;
* * ListNode(int x) : val(x), next(NULL) {}
* * };
* */
class Solution {
public:
ListNode* removeDuplicateNodes(ListNode* head) {
if(!head) return nullptr;
ListNode* cur = head;
// 记录前一个指针
ListNode* prev = nullptr;
// 记录之前已经访问过的节点
std::set<int> visited;
while(cur) {
if(visited.find(cur->val) != visited.end()) {
prev->next = cur->next;
cur = cur->next;
// 这个时候不需要更新prev,因为prev没有变化
} else {
visited.insert(cur->val);
prev = cur;
cur = cur->next;
}
}
return head;
}
};