美文网首页
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