申明:本文只用做自己的学习记录题目给你一个链表,删除链表的倒数第 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 个结点
基础教程推荐
猜你喜欢
- Swift初始化器与可选链的使用方法介绍 2023-07-08
- R语言 ggplot2改变柱状图的顺序操作 2022-11-17
- R语言绘制折线图实例分析 2022-11-21
- Ruby3多线程并行Ractor使用方法详解 2023-07-23
- Swift中重写和重载的使用与对比总结 2023-07-05
- R语言-修改(替换)因子变量的元素操作 2022-11-26
- 浅析ELF转二进制允许把 Binary 文件加载到任意位置 2023-07-06
- ruby on rails validates 2023-09-22
- ruby-on-rails-为使用Rails 4,nginx和乘客的用户设置自定义域 2023-09-21
- win10下使用virtualbox + vagrant配置ruby开发机环境 2023-07-23
