2021-02-09:如何删除一个链表的倒数第n个元素?

福哥答案2021-02-09:

1.创建虚拟头元素,虚拟头元素的Next指针指向头元素。
2.根据快慢指针求倒数第n+1个元素,假设这个元素是slow。
3.设置元素slow的Next指针。slow.Next=slow.Next.Next。
4.返回虚拟头元素的Next指针。

代码用golang编写,代码如下:

package main

import "fmt"

type ListNode struct {
Val int
Next *ListNode
} func main() {
head := &ListNode{}
head.Val = 1 head.Next = &ListNode{}
head.Next.Val = 2 head.Next.Next = &ListNode{}
head.Next.Next.Val = 3 head.Next.Next.Next = &ListNode{}
head.Next.Next.Next.Val = 4 ret := head
for ret != nil {
fmt.Print(ret.Val, " ")
ret = ret.Next
} fmt.Println("\r\n-------")
k := 4
fmt.Println("删除倒数第", k, "个元素后:") ret = DeleteNode(head, k)
for ret != nil {
fmt.Print(ret.Val, " ")
ret = ret.Next
}
}
func DeleteNode(head *ListNode, k int) *ListNode {
preHead := &ListNode{}
preHead.Next = head fast := preHead
slow := preHead k++
for k > 0 {
fast = fast.Next
k--
} for fast != nil {
fast = fast.Next
slow = slow.Next
} slow.Next = slow.Next.Next return preHead.Next
}

  

执行结果如下:

***
[评论](https://user.qzone.qq.com/3182319461/blog/1612827291)

2021-02-09:如何删除一个链表的倒数第n个元素?的更多相关文章

  1. 2020-07-16:如何获得一个链表的倒数第n个元素?

    福哥答案2020-07-16: 1.快慢指针.快指针先走n步,然后快慢指针同时走,直到快指针走到尾.2.两次遍历.第一次遍历获取链表长度,然后计算出序号,然后遍历获取序号下的元素.3.数组保存.遍历一 ...

  2. [CareerCup] 2.2 Kth to Last Element of Linked List 链表的倒数第k个元素

    2.2 Implement an algorithm to find the kth to last element of a singly linked list. 这道题让我们求链表中倒数第k个元 ...

  3. PTA 求链表的倒数第m个元素

    6-7 求链表的倒数第m个元素 (20 分)   请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>)个元素. 函数接口定义: ElementType ...

  4. 判断闰年的方法以及如何获得单链表的倒数第K个元素

    今天很悲催,心中向往的公司,打电话过来面试,问到我两个问题,结果竟然都没有回答上,伤心了,记录下今天失败,希望以后不要被同样的问题给PASS. 问题1.如何判断是否为闰年 所谓闰年那就是:四年一闰,百 ...

  5. 【每日一题】【第n个 n-->0】19./NC53 【删除】链表的倒数第 N 个结点-211123/220127

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 答案: import java.util.*; /* * public class ListNode { * int val; * ...

  6. 习题3.5 求链表的倒数第m个元素(20 分)浙大版《数据结构(第2版)》题目集

    请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素. 函数接口定义: ElementType Find( List L, int m ); 其 ...

  7. Q:链表的倒数第K个元素

    问题:如何得到链表中的倒数第k个元素?   一种简单的思路是遍历链表一遍,并统计出链表中节点的数目,然后计算出倒数第k个元素到链表头节点的元素的距离,然后得到对应的结果.但是,我们能否有一种更加简便的 ...

  8. 链表中倒数第N个元素——剑指Offer

    https://www.nowcoder.net/practice/529d3ae5a407492994ad2a246518148a?tpId=13&tqId=11167&tPage= ...

  9. 删除单链表的倒数第k个结点

    策略 直接遍历总数为len,再次遍历第len-k+1个就是答案,但是这样遍历了O(N+k)个,可以在O在更短的时间内找到 图示 参考代码 #include <iostream> using ...

  10. 求链表的倒数第m个元素

    法一: 首先遍历一遍单链表,求出整个单链表的长度n,然后将倒数第m个,转换为正数第n-m+1个,接下去遍历一次就可以得到结果. 不过这种方法需要对链表进行两次遍历,第一次遍历用于求解单链表的长度,第二 ...

随机推荐

  1. git 更换远程连接

    原来的git仓库不可用,更换远程仓库 查看远程仓库地址 git remote -v 删除远程仓库 git remote rm origin 添加远程仓库地址 git remote add origin ...

  2. Python学习笔记-argparse模块

    Python学习笔记-argparse模块 optparseargparse 昨天学习了一个简单的端口扫描器的脚本,其中涉及到了optparse模块,网上关于此模块的介绍已有很多,但这个模块已经不更新 ...

  3. 解决手机浏览器上input 输入框导致页面放大的问题

    加入以下代码在head 区,可解决此问题 <meta name="viewport" content="width=device-width, initial-sc ...

  4. springboot条件注册Condition注解

    环境识别 import org.springframework.context.annotation.Condition; import org.springframework.context.ann ...

  5. 基于 Agora SDK 实现 iOS 端的多人视频互动

    视频互动直播是当前比较热门的玩法,我们经常见到有PK 连麦.直播答题.一起 KTV.电商直播.互动大班课.视频相亲等. 本文将教你如何通过声网Agora 视频 SDK 在iOS端实现一个视频直播应用. ...

  6. MySQL 中 explain关键字

    更多内容,前往IT-BLOG explain关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理 SQL 语句的.分析查询语句或表结构的性能瓶颈.执行语句:explain + ...

  7. Solon v2.2.6 发布,助力信创国产化

    Solon 是一个高效的 Java 应用开发框架:更快.更小.更简单.它是一个有自己接口标准规范的开放生态,可为应用软件国产化提供支持,助力信创建设. 150来个生态插件,覆盖各种不同的应用开发场景: ...

  8. 亚马逊商品页面爬取(使用headers字段).py(亲测有效)

    import requests def getHTMLText(url): try: kv = {'user-agent':'Mozilla/5.0'} # 请求头;指定访问浏览器为Mozilla5. ...

  9. VS2013连接SQLSERVER数据库时显示无法添加数据连接

    VS2013连接sqlserver2008时出现如下错误: VS2013添加Microsoft SQL Server数据源时,会遇到无法添加数据连接. Could not load file or a ...

  10. markdown---->Typora搭配uPic

    记录一下在mac上面使用Typora和uPic来发表博客的过程,图床用的是阿里Oss.We all, whether we know it or not, are fighting to make t ...