
2020-07-16:如何获得一个链表的倒数第n个元素?
发布日期:2021-05-04 19:59:06
浏览次数:7
分类:技术文章
本文共 721 字,大约阅读时间需要 2 分钟。
福哥答案2020-07-16:
1.快慢指针。快指针先走n步,然后快慢指针同时走,直到快指针走到尾。
2.两次遍历。第一次遍历获取链表长度,然后计算出序号,然后遍历获取序号下的元素。 3.数组保存。遍历一次保存到数组,然后计算序号,这样就能获取到元素。 4.栈保存。遍历一次链表,遍历的过程中将元素放到一个栈当中,遍历完毕之后再将元素从栈中弹出,弹出的第n个元素就是倒数第n个元素。最好的方式是第1种方式。但是对于大公司的面试,可不仅仅是解题,还会让你说出好几种方法,面试才能过关。
代码用golang编写,采用第1种方式,代码在leetcode里测试,题目是【面试题 02.02. 返回倒数第 k 个节点】,代码如下:
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func kthToLast(head *ListNode, k int) int { //快慢指针 fast := head slow := head //快指针先走k步 for k > 0 { fast = fast.Next k-- } //快慢指针走剩下的,直到快指针走到尾 for fast != nil { slow = slow.Next fast = fast.Next } //慢指针就是所求的值 return slow.Val}
执行结果如下:

发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月24日 21时51分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
POJ 1797 最短路变形所有路径最小边的最大值
2019-03-03
Emacs:Eldoc 全局化了 | Linux 中国
2019-03-03
在 Linux 中使用变量 | Linux 中国
2019-03-03
黑客利用“Simjacker”漏洞窃取手机数据,或影响十亿人 | 每日安全资讯
2019-03-03
Richard Stallman 被迫辞去 FSF 主席的职务 | Linux 中国
2019-03-03
Firefox 69 已可在 Fedora 中获取 | Linux 中国
2019-03-03
如何在 Linux Mint 中更换主题 | Linux 中国
2019-03-03
Linux 中国徽标征集活动结果 | Linux 中国
2019-03-03
黑吃黑——黑客组织通过黑客工具攻击其他黑客 | 每日安全资讯
2019-03-03
在 Python 调试过程中设置不中断的断点 | Linux 中国
2019-03-03
如何在 Bash 中编写函数 | Linux 中国
2019-03-03
AI 系统向自动化编码迈进 | Linux 中国
2019-03-03
使用 Jupyter Notebooks 构建一个远程管理控制台 | Linux 中国
2019-03-03
微软将举办 Azure 开放日活动,主讲 Linux 开源软件 | 新闻拍一拍
2019-03-03
使用开源可视化工具来理解你的 Python 代码 | Linux 中国
2019-03-03
【2021 ECUG Con】聚势而来,与你相约花开时
2019-03-03
硬核观察 | 有人在比特币骗局中损失了 10 个比特币
2019-03-03
初识 Python: global 关键字 | Linux 中国
2019-03-03