工作 8 年手写不出反转链表是不是进不了 bat 了?

2021-01-04 21:23:36 +08:00
 shenwu35

心烦意乱图上画半天无法代码写出,跟自己较劲不看答案, 硬写都快抑郁了,看答案下次还是忘记,所以硬肝,这很痛苦,救命。

现在还没肝出来,怎么宽慰自己?

10893 次点击
所在节点    程序员
72 条回复
Claar
2021-01-05 20:08:06 +08:00
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
return head
pre = None
cur = head
next = cur.next


while 1:
cur.next = pre
if not next:
return cur
pre = cur
cur = next
next = cur.next


由于太久没写了,没了刷题是注意输入为空的情况所以刚才没有提到 head 为空的情况,结果是两次提交
之前提的 bug 是我上面初始化 pre 是一个空结构,那是要最后剔除掉的,这里直接用 None 就结束了,不需要剔除,当然 pre 初始化为空结构在链表题例有很多好处,所以我习惯性的会初始化为空结构
这种题目是入门中的入门,数学难度和编码难度都完全没有,不可能学不会,记得多动脑,先理解再实现,像我前面提到的按着思路写,一点难度都没有好吧
楼主加油啊,这种东西根本没难度的,如果觉得想出思路很难可以加我,到时候进了 bat 别忘了带带小弟就行哈哈哈哈哈
wanglufei
2021-01-05 22:06:20 +08:00
画图理解一下吧
pythonee
2021-01-05 22:29:47 +08:00
我已经不记得反转链表的概念了,但还在大厂
akakidz
2021-01-05 22:33:18 +08:00
写五遍之后...闭着眼都能写了...我是菜鸡一个,但是我觉得这种题目不会写没必要硬刚,你还能自己空手造出一个原子弹吗
Claar
2021-01-05 23:42:20 +08:00
@pythonee 记不记得不重要好吧,这种入门难度的题目,要练也很好练,我觉得哪怕是不知道问题都不大,世界那么大没必要什么都懂,但是理解不了或理解了写不出来,问题就很大了
10bkill1p
2021-01-06 09:16:17 +08:00
我也不会😁
guonaihong
2021-01-06 09:39:51 +08:00
翻转链表,重新插入一遍就是反的。会插入逻辑就行。
zoyua
2021-01-06 10:10:45 +08:00
记不住很正常,把递归和迭代的题解多写几遍就记住了
wangbenjun5
2021-01-06 10:33:47 +08:00
不会真的有人以为只要是程序员就一定得会算法吧?

IT 行业分类很大很广,自以为只有部分涉及底层架构领域开发需要熟知各种算法,大部分岗位都是花式 CRUD 业务相关的开发,要算法有什么用,了解算法是一方面,能够无 bug 手写又是另一个维度。

先不说反转链表,就说链表这个数据结构,真正开发的时候哪个不是直接现成的库,还会自己手动写???

至于面试,我觉得不是所有岗位都会死考算法,BAT 里面菜逼也一堆,打酱油的岗位也很多,不是个个都是大神,除非是算法岗
Still4
2021-01-06 11:19:53 +08:00
```
class Solution {
public ListNode reverseList(ListNode head) {
ListNode newHead = null;
ListNode current = head;
while (current != null) {
// ListNode temp = new ListNode(current.val);
// if (newHead != null) {
// temp.next = newHead;
// }
// newHead = temp;
// current = current.next;
ListNode next = current.next;
current.next = newHead;
newHead = current;
current = next;
}
return newHead;
}
}
```
注掉的部分是我自己理解的过程,生成新的链表,每个节点生成新的对象,注释外的的是前面有人提的,直接操作原始数据,其实就是想清楚过程,平时多思考吧
hehe12980
2021-01-06 15:02:43 +08:00
说真的,反转链表很简单把 最简单的方法就是遍历 一次 把节点的数拿出来 放到栈里 再遍历 构建一个链表,你要说递归或者指针转移的方式想不到 可以理解
shenwu35
2021-01-06 22:45:55 +08:00
经过实战,头插法,增加虚拟头节点,非递归的方式写好了。如图: https://prnt.sc/whka1v

对于递归版本还在继续肝。
至于为何肝,是为了证明自己理论多年学过复习后还是能实际代码跑成功的,当然也是 冲这个目标准备,严要求才可能得到中等结果,也是给自己提提气,不屈服吧。

评论区我翻完了,8 年的我进 bat 与刚毕业 985 学历新人也没优势了,除非项目很亮点,普本学历也没优势,我清楚自己的定位。
不过另外朋友说项目经验才是我的重点,扬长避短,这个非常赞同,我会深挖项目经验。
还有个朋友说 牛角尖,谢谢您的提醒,我只为了这题来提气不会阻塞,我知道更重要的扬长避短和时间的宝贵和紧迫性。
还有个大哥说 8 年了,要摆脱码农印记,多在商业需求上思考也是非常赞同。当然对于毕业前 5 年,技术还是第一位修炼。
最后,我看完评论区各位的鼓励动力很足,也没想过放弃这个破题。再次谢谢技术单纯的同行们,各位也要好心情保护身体,改变世界。希望明早上班刷到本回复的同行开启美好一天,return .

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

https://ex.noerr.eu.org/t/741661

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

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

© 2021 V2EX