给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
1、 遍历一边 然后用一个指针遍历
2、双指针 构建一个先指针 fast 比 slow 快 K步
3. 递归?
条件 k.next ==nil && k==1 return k.next return 1
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteNode(head *ListNode, val int) *ListNode {
if head ==nil{
return nil
}
if head.Next==nil && head.Val==val{
return nil
}
if head.Val == val{
return head.Next
}
ret := head
pre := head
head = head.Next
for head!=nil{
if head.Val ==val{
pre.Next = head.Next
}
pre = head
head = head.Next
}
return ret
}