/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* Note: The returned array must be malloced, assume caller calls free().
*/
#define N 10005
typedef struct ListNode* Node;
int st[N] = {0};
struct ListNode* filterList(struct ListNode* head) {
st[abs(head->val)] = 1;
Node p = head;
while(p->next) {
if(st[abs(p->next->val)]) {
Node q = p->next;
p->next = q->next;
free(q);
} else {
p = p->next;
st[abs(p->val)] = 1;
}
}
return head;
}