美文网首页
Remove Nth Node From End of List

Remove Nth Node From End of List

作者: 余启涛 | 来源:发表于2019-03-23 23:09 被阅读0次
1.png

解决思路

注意:题目要求一次遍历完成。
定义两个指针,fast先走n步,fast走到结尾,slow可以定位到要删除节点,可完成删除。

/**
 * 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
    }
}

相关文章

网友评论

      本文标题:Remove Nth Node From End of List

      本文链接:https://www.haomeiwen.com/subject/zioevqtx.html