博客
关于我
2020-07-16:如何获得一个链表的倒数第n个元素?
阅读量:274 次
发布时间:2019-03-01

本文共 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}

执行结果如下:
在这里插入图片描述


转载地址:http://rqmo.baihongyu.com/

你可能感兴趣的文章
《ybtoj高效进阶》第二部分第二章例题5 子正方形
查看>>
P1381 单词背诵
查看>>
SSLOJ1230 战略游戏
查看>>
P5854 【模板】笛卡尔树
查看>>
SpringMVC的基础配置之注解驱动
查看>>
在Ubuntu上安装GCC编译器
查看>>
Maven(高级)之聚合
查看>>
快速构建SpringBoot工程
查看>>
SpringBoot配置之配置文件分类
查看>>
Vue中使用v-for不能用index作为key值
查看>>
position: fixed如何相对父元素定位
查看>>
SecureCRT注册机
查看>>
供应商解决了mini-LED的生产问题 新款MBP蓄势待发?
查看>>
new对象实际是在干嘛,懂了后String相关面试题随便推导
查看>>
Spring中@EnableCaching如何集成redis
查看>>
爱了!Alibaba技术官甩出的SpringCloud笔记,GitHub已标星81.6k
查看>>
菜鸟程序员,被无良HR欺骗,因祸得福,竟“意外”拿下美团offer
查看>>
已跪,Java全能笔记爆火,分布式/开源框架/微服务/性能调优全有
查看>>
吓我一跳?看了线程和线程池的对比,才知道池化技术到底有多牛
查看>>
给公司妹子讲了好久,头都大了,一个SQL语句是如何执行的?
查看>>