02.01、移除重复节点

ぃ、小莉子 提交于 2020-03-10 02:45:34

利用map的特性,将第一次遇到的值装入map中,同时更新链表
若是键值的值大于0,则跳过当前节点,
最后记得要在遍历完链表后将新链表的末尾置为NULL,
即list->next=NULL
链表的题目都值得注意的就是地址不要弄串了,每次都应该多申请一个地址来记录原本的头节点,最后直接返回pre->next
/**

  • Definition for singly-linked list.
  • struct ListNode {
  • int val;shen
    
  • ListNode *next;
    
  • ListNode(int x) : val(x), next(NULL) {}
    
  • };
    /
    class Solution {
    public:
    ListNode
    removeDuplicateNodes(ListNode* head)
    {
    map<int,int>cc;
    ListNode* pre=new ListNode(NULL);
    ListNode* list=pre;
    while(head!=NULL)
    {
    if(cc[head->val]==0)
    {
    cc[head->val]++;
    list->next=head;
    list=list->next;
    head=head->next;
    }
    else
    {
    head=head->next;
    }
    }
    list->next=NULL;
    return pre->next;
    }
    };
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!