删除链表的倒数第 n 个节点

删除链表的倒数第n个节点

http://www.nowcoder.com/questionTerminal/f95dcdafbde44b22a6d741baf71653f6

由于题中已经表示 n 一定有效,因此不考虑 n 无效的情况。
限定时间复杂度为 O(n), 说明需要在一个循环内完成,因此我们使用前后指针的形式。
使用 pre 表示当前节点 cur 的前一个结点,next 结点表示距离当前结点 cur 为 n 的结点,因此,当 cur 移动到最后一个结点时,此时删除 cur 就完成了题目中的要求。

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
  * 
  * @param head ListNode类 
  * @param n int整型 
  * @return ListNode类
*/
func removeNthFromEnd( head *ListNode ,  n int ) *ListNode {
    // write code here\
    var root *ListNode
    root = &ListNode{Val: 0,Next: nil}
    root.Next = head
    var pre *ListNode
    var cur *ListNode
    var next *ListNode
    pre = root
    cur = head
    next = head
    for i:=1;i<n;i++{
        next = next.Next
    }

    for next!=nil&&next.Next!=nil{
        pre = pre.Next
        cur = cur.Next
        next = next.Next
    }

    pre.Next = cur.Next
    return root.Next
}
全部评论

相关推荐

01-29 16:08
已编辑
华南农业大学 Java
点赞 评论 收藏
分享
2024-12-21 10:42
已编辑
江西软件职业技术大学 Java
新宿站不停:该提升学历就提升学历,菜了就多练。没事找牛马公司虐自己是吧? 谁没事说自己“经验少”,这不自己把自己塞剎鼻hr嘴里找🐴吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务