题解 | #删除有序链表中重复的元素-II#

删除有序链表中重复的元素-II

https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024

建立一个容器vector<pari<int,int>> list,pair.first记录链表节点的值,pair.second记录这个值出现的次数。

将链表的值都录入list。

list迭代,将pair.second==1的值新建节点,并连接到新链表。

#include <vector>
class Solution {
  public:
    ListNode* deleteDuplicates(ListNode* head) {
        vector<pair<int, int>> list;
        auto p = head;
        while (p != nullptr) {
            if (list.empty()) {
                list.push_back(make_pair(p->val, 1));
                p = p->next;
                continue;
            }
            int index = findByKey(list, p->val);
            if (index == -1) {
                list.push_back(make_pair(p->val, 1));
            } else {
                list[index].second++;
            }
            p = p->next;
        }
        ListNode* Head = nullptr;
        ListNode* q = nullptr;
        for (auto& i : list) {
            if (i.second == 1) {
                if (q == nullptr) {
                    auto r = new ListNode(i.first);
                    Head = r;
                    q = Head;
                } else {
                    auto r = new ListNode(i.first);
                    q->next = r;
                    q = r;
                }
            }
        }
        return Head;
    }
    int findByKey(vector<pair<int, int>>& list, int key) {
        if (list.empty()) {
            return -1;
        }
        for (int i = 0; i < list.size(); i++) {
            if (list[i].first == key) {
                return i;
            }
        }
        return -1;
    }
};

全部评论

相关推荐

刘湘_passion:出国旅游?那就小心你的腰子咯
点赞 评论 收藏
分享
Cherrycola01:0实习 0项目 约等于啥也没有啊 哥们儿这简历认真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务