数组 - 螺旋矩阵2
本题以力扣上的203号题目为例。
这道题有两种情况
- 如果删除的是头节点怎么办?
- 如果删除的不是头节点怎么办?
有没有一种方式能够将上述两种情况全部包含?
有的,我们自己建一个虚拟头节点
通过自建一个虚拟头节点,得到新的链表删除操作都可以按照某一个固定的操作执行了。
需要注意的是,我们要删除[9]这个节点,此时必须在[1]这个节点上,这个大家想一想就能想清楚,如果我们此时在[9]上,我们如何拿到[9]上一个节点呢?
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
dummy := &ListNode{}
dummy.Next = head
node := dummy
for node != nil && node.Next != nil {
if node.Next.Val == val{
node.Next = node.Next.Next
}else{
node = node.Next
}
}
return dummy.Next
}