给你一个链表的头节点?head ?和一个整数?val ?,请你删除链表中所有满足?Node.val == val ?的节点,并返回?新的头节点?。
普通的链表操作是我比较熟悉的一个点,所以引入了两个指针,但看官方思想,可以不引入多个指针,直接一个变量即可以,可以用next表示实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
if head == nil{
return nil
}
newHead := &ListNode{
0,
nil,
}
newHead.Next = head
p := newHead
t := head
for t != nil{
if t.Val == val{
p.Next = t.Next
t = t.Next
}else{
p = p.Next
t = t.Next
}
}
return newHead.Next
}
|