1.png
解決思路
注意:題目要求一次遍歷完成净当。
定義兩個指針衙伶,fast先走n步,fast走到結(jié)尾叨咖,slow可以定位到要刪除節(jié)點瘩例,可完成刪除啊胶。
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeNthFromEnd(head *ListNode, n int) *ListNode {
if head == nil {
return nil
}
var slow *ListNode
var fast *ListNode = head
for {
if fast.Next == nil {
if slow == nil {
return head.Next
}else {
slow.Next = slow.Next.Next
return head
}
}
n --
if n == 0 {
slow = head
}
if n < 0 {
slow = slow.Next
}
fast = fast.Next
}
}