0
点赞
收藏
分享

微信扫一扫

SpringBoot实战教程:购物推荐网站的设计与实现

五殳师兄 2024-10-14 阅读 11

1.题目要求:

`
给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。

示例 1:

输入: nums = [1,2,3], head = [1,2,3,4,5]

输出: [4,5]

解释:

在这里插入图片描述
移除数值为 1, 2 和 3 的节点。

输入: nums = [1], head = [1,2,1,2,1,2]

输出: [2,2,2]

解释:
在这里插入图片描述
移除数值为 1 的节点。

示例 3:

输入: nums = [5], head = [1,2,3,4]

输出: [1,2,3,4]

解释:
在这里插入图片描述
链表中不存在值为 5 的节点。
2 题目代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* modifiedList(vector<int>& nums, ListNode* head) {
        //把数组存入set容器中
        multiset<int> array(nums.begin(),nums.end());
        ListNode* cur = head;
        //然后去遍历链表
        while(cur->next != NULL){
            //如果要删除的结点在头部,则把头结点移向下一个结点
            if(cur == head&&array.find(cur->val) != array.end()){
                head = cur->next;
                delete cur;
                cur = head;
            }else if(array.find(cur->next->val) != array.end()){//如果删除的结点在一下节点时,把下一结点指向赋给结点,然后删除下一个结点
                ListNode* p = cur->next;
                cur->next = p->next;
                p->next = NULL;
                delete p;
            }else{
                cur = cur->next;
            }
        }
        return head;
    }
};
举报

相关推荐

0 条评论