算法打卡 | 第一天 | 力扣203:移除链表元素

33 阅读1分钟

题目:力扣203:移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

 

示例 1:

输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]

解析:

 type ListNode struct {
     Val int
      Next *ListNode
  }
 
func removeElements(head *ListNode, val int) *ListNode {
    if head == nil{
        return head
    }
    var dummy = &ListNode{Val:-1}

    dummy.Next = head
    var pre = dummy

    cur := head
    for{
        if cur == nil {
            break
        }

        if cur.Val == val{
            pre.Next = cur.Next
        }else{
            pre = cur //开始我写错了!!!
        }
        cur = cur.Next
    }
    return dummy.Next

}

反思:

代码24行这里我开始写错了,写成pre.next = cur,实际应该是pre移动,如果next移动,那最后返回数据会少很多数据