申明:本文只用做自己的学习记录题目给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], n = 1 输出:[] 示例...

申明:本文只用做自己的学习记录
题目
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
代码
type ListNode struct {
Val int
Next *ListNode
}
func removeNthFromEnd(head *ListNode, n int) *ListNode {
//本题采用双指针,指针1和指针2的间隔为n+1
//判断边界条件
if head.Next == nil {
return nil
}
//创建新的表头
dummy := &ListNode{0, head}
//创建指针
temp := dummy
//创建两个指针
//指针1
firstNode := temp.Next
//遍历到指针2的位置
for i := 0; i <= n; i++ {
//如果在遍历指针2的时候出现下一节点为空的情况,说明n的数值大小等于链表长度
//则删除链表第一个节点就好
if temp.Next == nil {
dummy.Next = dummy.Next.Next
return dummy.Next
}
temp = temp.Next
}
//指针2
secondNode := temp
//遍历链表直至指针2的子节点为nil,说明已经到链表尾部了
for secondNode.Next != nil {
//指针1后移
firstNode = firstNode.Next
//指针2后移
secondNode = secondNode.Next
}
//删除该节点后一位节点
firstNode.Next = firstNode.Next.Next
//返回头节点
return dummy.Next
}
沃梦达教程
本文标题为:go语言刷题:19. 删除链表的倒数第 N 个结点


猜你喜欢
- Go Web开发进阶实战(gin框架) 2023-09-06
- R语言-如何切换科学计数法和更换小数点位数 2022-11-23
- Swift超详细讲解指针 2023-07-08
- Golang http.Client设置超时 2023-09-05
- R语言关于二项分布知识点总结 2022-11-30
- Ruby的字符串与数组求最大值的相关问题讨论 2023-07-22
- 汇编语言程序设计之根据输入改变屏幕颜色的代码 2023-07-06
- R语言绘图数据可视化pie chart饼图 2022-12-10
- Ruby on Rails在Ping ++ 平台实现支付 2023-07-22
- Ruby 迭代器知识汇总 2023-07-23