给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针
例如,
给出的链表为:1->2->3->4->5 ,
.
删除了链表的倒数第
个节点之后,链表变为
.
备注:
题目保证 一定是有效的
请给出时间复杂度为
的算法
思路:
遍历获取链表长度,找到要删除的节点,然后删掉,记得把链表连接起来
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
node := head
length := 0
for node != nil {
node = node.Next
length++
}
if length == 1 && n == 1 {
return nil
}
resPre := new(ListNode)
resPre.Next = head
pre := resPre
node = head
for i := 0; i < length-n; i++ {
pre = node
node = node.Next
}
pre.Next = node.Next
return resPre.Next
}
这篇博客讨论了一个链表问题,即如何在给定的时间复杂度O(n)内删除链表的倒数第n个节点。提供的解决方案首先遍历链表获取其长度,然后再次遍历找到目标节点并进行删除,最后返回更新后的链表头指针。该方法确保了在有效输入下正确地修改链表。
1191

被折叠的 条评论
为什么被折叠?



