3756. 筛选链表
一个单链表中有 m
个结点,每个结点上的元素的绝对值不超过 n
。
现在,对于链表中元素的绝对值相等的结点,仅保留第一次出现的结点而删除其余绝对值相等的结点。
请输出筛选后的新链表。
例如,单链表 21 -> -15 -> -15 -> -7 -> 15,在进行筛选和删除后,变为 21 -> -15 -> -7。
输入样例:
输入:21->-15->-15->-7->15
输出:21->-15->-7
数据范围
1≤m≤1000
,
 1≤n≤10000
代码实现:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* filterList(ListNode* head) {
        bool st[10001]={};
        auto p=head;
        st[abs(p->val)]=true;
        while(p->next){
            int x=abs(p->next->val);
            if(st[x]){
                auto q=p->next;
                p->next=q->next;
                delete q;
            }else{
                p=p->next;
                st[x]=true;
            }
            
        }
        return head;
    }
};
 
 



















