Leetcode每日一题练习 ------ 3217. 从链表中移除在数组中存在的节点

Leetcode 每日一题练习继续讨论:

3217. 从链表中移除在数组中存在的节点
3217. Delete Nodes From Linked List Present in Array

粗体文本### 题解
本题先保存nums中都有哪些数字, 本题的关键在于如何快速判断某个数是否在nums中, 考虑到nums范围到10^5. 因此可以直接用10^5的布尔数组, 下标表示对应的数字, true表示存在, false表示不存在. 当然用哈希表也是可以的. 随后用双指针法对链表中的节点进行遍历并删掉包含在nums中的节点即可.

代码

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func modifiedList(nums []int, head *ListNode) *ListNode {
    var right, left *ListNode
    numbool := make([]bool, 100001)
    for _,num := range nums{
        numbool[num] = true
    }
    left = nil
    right = head
    for right != nil{
        if numbool[right.Val]{
            if left == nil{
                head = right.Next
            }else{
                left.Next = right.Next
            }
        }else{
            left = right
        }
        right = right.Next
    }
    return head
}

感谢你的分享!

1 Like

哇,是刷题佬

1 Like