单链表查找

今天看到一个帖子

http://www.iteye.com/topic/622496

里面提到了如下问题:

附微软面试的面试题:
   1:单链表,遍历一次,找到倒数第N个节点。
   2:单链表,遍历一次,找到中间节点。(这个主要要考虑到单链表元素个数是奇/偶数的情况,这个是关键的,我当时  就是差点没考虑到这个)。
  3:如何把一个大象装到冰箱里。
  4:随手拿一个笔筒,把笔倒掉,问,你会用什么方法测试这个笔筒。

有意义的回复:

 

第一题先把一个节点前进n个节点(当然,前进的时候判断是否遇到null,遇到表明题目无解)。然后用另外一个节点和刚才的节点一起前进,当后一个节点遇到null时,前一个节点就是要找的节点。

第二题和第一题的思路是一样的。一个前进两个节点,一个前进一个,和检测环算法类似。

时间复杂度都是O(n)


你的基本解题思路是对的,第一题也没有什么问题,但第2题有点问题,因为要考虑到元素是偶数的情况下,你是如何确认中间节点的(可以认为偶数没有中间节点,也可以认为偶数有两个中间节点),另外如果是奇数且只有一个节点,你的中间节点又是怎么算的?这些细节问题都是需要考虑到得。

 

4:随手拿一个笔筒,把笔倒掉,问,你会用什么方法测试这个笔筒。
答:再把笔装回去,原因很简单,笔筒就是用来装笔的,要测试的最好方法就是往里面装笔。

 

exloong 写道
第四题你们想怎么去测试就进圈套了,要先问他要测试需求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值