GO题解 | #删除链表的倒数第n个节点#
删除链表的倒数第n个节点
http://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6
go解题答案
- 时间复杂度O(n)
- 思路概括:双指针
- 思路核心:
1、先计算链表长度
2、再找到要删除的节点前一个,然后删除func removeNthFromEnd( head *ListNode , n int ) *ListNode {
// write code here
size:=0
cur:=head // 第一个临时指针,为了计算size
cur2:=head //第二个临时指针,为了找到要删掉的节点
ans :=ListNode{}
ans.Next=cur2 // 第三个指针,为了返回结果
// 计算size
for cur!=nil {
size+=1
cur=cur.Next
}
// 处理特殊情况
if size-n==0{
cur2=cur2.Next
return cur2
}
// 找到要删除节点的上一个节点,所以-1
for i:=0;i<size-n-1;i++{
cur2=cur2.Next
}
cur2.Next=cur2.Next.Next
return ans.Next
}
如果有帮助请点个赞哦, 更多文章请看我的博客
题主背景
- 从业8年——超级内卷500Q技术经理——目前专注go和微服务架构