尴尬的面试题,没有解决,估计面试官在后台偷笑

2021-04-17 10:22:39 +08:00
 ads123

给定链表的头指针和一个结点指针,在 O(1)时间删除该结点。不删除头尾结点 typedef struct LNode{ int data; LNode *next; }LNode, *List;

函数的声明如下: void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);

我没有找出解决办法一直在纠结怎么直接下标索引。结果真是想多了

8812 次点击
所在节点    程序员
50 条回复
Rocketer
2021-04-17 12:53:52 +08:00
好像在《数学之美》里见过,但从来没用到过,因为 leetcode 里类似的题都要求不能改 node 的值
eephee
2021-04-17 13:10:20 +08:00
@Knuth 不用遍历怎么删除呢?
FACEB00K
2021-04-17 13:22:06 +08:00
昨天在 leetcode 上做过,评论还是挺搞笑的 https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
wheeler
2021-04-17 13:36:03 +08:00
《剑指 offer 》的 13 题。
yolee599
2021-04-17 13:48:27 +08:00
@eephee 无需知道前驱节点,直接把要删除的节点替换为下一个节点。next 变成下一个节点的 next,data 变成下一个节点的 data
smdbh
2021-04-17 14:18:58 +08:00
我想知道原来指向下一个节点的指针,怎么办?
zmxnv123
2021-04-17 14:30:04 +08:00
剑指 offer 至少 dei 刷几遍吧
xinshoushanglu
2021-04-17 15:30:23 +08:00
可以,脑筋急转弯哈哈
raaaaaar
2021-04-17 15:44:34 +08:00
表示我们数据结构课上就讲了。。
felixlong
2021-04-17 16:34:45 +08:00
nngt 。这是脑筋急转弯啊。这不是删除,这是交换。
securityCoding
2021-04-17 17:14:04 +08:00
面了三家大厂,算法题全部是中等题 , 回溯+动态规划
Edcwsyh
2021-04-17 17:17:22 +08:00
@felixlong 这没用交换, 就是单纯的移动覆盖...
Knuth
2021-04-17 18:14:05 +08:00
@eephee node. next 为空,直接把当前节点置空不就是删除了
Kangst
2021-04-17 19:56:03 +08:00
@Cu635 针对这道题而言,用 c/c++好像不能 free,可以参考 leetcode 237 题里面 c++的一个题解,讨论了这个问题。
另外,力扣官网的剑指 Offer 18 也是这个题,题目说明里写了如果使用 c/c++不需要考虑 delete 或 free 结点;我觉得这题就当个脑筋急转弯,能得到结果就行了,本身题目就不好。
MiniGhost
2021-04-17 19:59:19 +08:00
面试考脑筋急转弯就没意思了啊,这种题不应该出现在面试中
eephee
2021-04-17 21:09:15 +08:00
@yolee599 关键是如果要删除的节点是最后一个节点,就没办法了
eephee
2021-04-17 21:11:08 +08:00
@Knuth 怎么把当前节点置空啊,赋值为 NULL 没法置空,只能将指针变量指向 NULL,没法改变原有节点
eephee
2021-04-17 21:12:50 +08:00
@JokerZX 可能这个函数最后要返回头节点,所以参数也带了个头节点
yolee599
2021-04-17 21:55:07 +08:00
@eephee 题目是不删除头尾节点,由于这个是单向链表,头节点直接由传入的参数得知,而尾节点则可以通过 p->next == NULL 得知
eephee
2021-04-17 22:32:47 +08:00
@yolee599 哦哦原来是不删除头尾节点,没看题误解了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771236

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX