美文网首页
19. Remove Nth Node From End of

19. Remove Nth Node From End of

作者: sarto | 来源:发表于2022-03-17 23:21 被阅读0次

    题目

    解析

    从后开始,方案很简单

    1. 得到链表总长度
    2. 计算从前开始第几个
    3. 找到要删除的节点
    4. 利用链表功能删除,注意处理边界

    边界问题

    1. 删除的是头节点

    伪码

    代码

    func removeNthFromEnd(head *ListNode, n int) *ListNode {
        var Len int
        for p := head; p != nil; p=p.Next{
            Len++
        }
        n = Len-n
        last := head
        del := head
        for ;n!=0; n--{
            last = del
            del = del.Next
        }
        if del == head {
            return head.Next
        }
        last.Next = del.Next
        return head
    
    

    后记

    这里其实不需要记录前一个指针是什么,我们只需要将当前指针指向的内存区域设置为 空指针就可以,但是在 golang 里,我还不会设置!!! 估计要用到 unsafe.pointer,我能将内存区域值设置为全 0,但 全 0 并不代表是 nil。

    相关文章

      网友评论

          本文标题:19. Remove Nth Node From End of

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