欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 架构师面试(二十七):单链表

架构师面试(二十七):单链表

2025/4/8 3:44:24 来源:https://blog.csdn.net/wang_zong_sheng/article/details/147020859  浏览:    关键词:架构师面试(二十七):单链表

问题

今天的问题对于架构师来说会相对容易许多。今天出一个【数据结构与算法】相关的题目,醒醒脑。

给一张【单链表】,该单链表有100个节点元素(当然,事先我们是不知道100这个数目的),要获取倒数第8个元素的值,时间复杂度最小应该是多少呢?

    A、108;

    B、100;

    C、92;

    D、8。

(提示一下:这是数据结构中一个非常典型的小型算法,有栈实现方案、队列实现方案和双指针实现方案等!)

解析

图片

获取单链表倒数第 x 个元素(如上图所示,假设 x = 3),有这样几种常用方案:

方案一:栈实现方案

        

图片

        顺序遍历单链表,将所有的节点元素顺序“入栈”;然后再执行“出栈”操作,第 x 次“出栈”的元素就是单链表中倒数的第  x 个元素;该方案的时间复杂度 为 单链表长度  len + x。

方案二:队列实现方案

图片

       准备一个长度为 x 的队列;顺序遍历单链表,将所有的节点元素顺序“入队”(入队过程中,如果队列已满,则“出队”一个元素后,再“入队”,周而复始,让队列始终保持队满状态);当单链表最后一个元素“入队”后,此时队首元素即是单链表中倒数的第 x 个元素(当然,此时的队列需要是满的状态); 该方案的时间复杂度为 单链表的长度 len。

方案三:双指针实现方案

图片

     准备两个指针 p 和 q,让 p 指向单链表的首元素,让 q 指向单链表的第 x 个元素; 然后两个指针一起向后移动, 当 q 指向单链表最后一个元素时,指针 p 指向的元素即是单链表倒数的第 x 个元素; 该方案的时间复杂度为 单链表的长度 len。

数据结构中任何一个问题,几乎都可以至少找到两种解决方案,是不是很奇妙?!

参考答案

B

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词