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

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

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

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

10154 次点击
所在节点    程序员
72 条回复
mxT52CRuqR6o5
2021-01-05 11:10:48 +08:00
得看你的写不出是怎么个写不出
hantsy
2021-01-05 11:16:20 +08:00
早不记得了。

那是课本上的,早还给老师了。
onesec
2021-01-05 11:49:05 +08:00
楼主加油,最近我也在刷题,多准备一些;现在进很多厂也要考算法题,不一定是 BAT ;
自己的思路是先写出“最笨”的解法,然后再优化;如果想不出也不死嗑, 放轻松明天再写;
afewok
2021-01-05 11:50:41 +08:00
说起来,去年面头条,给定的算法是掐头去尾,中间链上反转。半小时我也没写出来。
后面刷了几天 leetcode,楼主说的这种单纯全量反转,加个虚拟头节点,简直分分钟的事。
```golang

type ListNode struct {
Val int
Next *ListNode
}

func reversal(head *ListNode) *ListNode {
dummy := &ListNode{-1, nil}
p := dummy
for head != nil {
p, dummy.Next = dummy.Next, head
head, dummy.Next.Next = dummy.Next.Next, p
}
return dummy.Next
}
```
yedan1206
2021-01-05 11:56:01 +08:00
你们刷 leetcode 是直接在网页里面写代码,还是先在 ide 写好后运行没问题了,再复制粘贴进去?
Suddoo
2021-01-05 12:17:42 +08:00
@stdout 主要是内卷严重吧,以后还可能考微积分什么的
tikazyq
2021-01-05 13:35:20 +08:00
写得出来照样进去 996 搬砖
PopRain
2021-01-05 13:47:06 +08:00
反转链表都写不出来,快 50 岁的程序员认为楼主不适合做编程,这个大概是初学者的题目吧
bjjvvv
2021-01-05 14:03:30 +08:00
刷了 200 多题,做这道题还是没有一遍过
花了不到 10 分钟吧
易错点就是反转的时候要先保存到临时变量,和反转二叉树一样
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}

ListNode prev = null, curr = head;
while (curr != null) {
ListNode next = curr.next;
curr.next = prev;
prev = curr;
curr = next;
}

return prev;
}
}
wr516516
2021-01-05 17:32:01 +08:00
加油,奥利给
zzzzzzggggggg
2021-01-05 17:46:43 +08:00
这说明你之前就没理解过,如果理解了现在忘了,看了答案就能想起来;
人就别勉强自己了,干点自己喜欢干的吧,年轻的时候就没搞懂,现在怕是更没戏
456789
2021-01-05 17:51:21 +08:00
加油加油 我也要加油
Samuelcc
2021-01-05 17:58:48 +08:00
说实话,一些最基本的题目例如反转链表应该是只要了解这种数据结构就能写出来才对。写不出来确实不应该,得练练了。
qwer666df
2021-01-05 18:07:59 +08:00
@luckyrayyy #3 这个是啥平台啊老哥
luckyrayyy
2021-01-05 18:15:17 +08:00
@qwer666df leetcode
coolesting
2021-01-05 18:38:43 +08:00
不写低层的,基本用不上算法。写不出也正常。
lzlee
2021-01-05 18:39:01 +08:00
熟练度问题...

这种考试, 本质上只是问你直到不知道,
而不会问你, 这玩意你是怎么发现的, 为了解决什么问题发现的, 最后效果怎么样
就算你花十天硬背下来了, 你不说也没人知道你怎么记下来的

真的看了这个, 就能进 bat 了?
想想, 你看会了就能进去, 你这成长速度不是很快吗?

扯远了, 老哥加油
Claar
2021-01-05 19:05:38 +08:00
个人意见:虽然多数人多数情况下不需要用到算法,但是反转链表这种问题简单的令人发指,写不出来确实有问题,算法题基本可以理解为数学和 coding 的结合,链表基本不要求数学水平,写不出来可能是编码能力低下,建议多练习,一般人很难练不会
VinsonGuo
2021-01-05 19:15:04 +08:00
0 年工作经验闭着眼睛写,十年工作经验的可能连冒泡都写不出来🤣
Claar
2021-01-05 19:21:42 +08:00
上厕所时间随便写伪代码,反转链表是吧,原理很简单,需要三个点,pre 原当前点的前一个点,cur,next
先定一个 pre=node()
cur=root
next=cur.next
三个点初始化完成


当前点的 next 改指向前一点 cur.next=pre
要考虑 next 是否为空,空就结束了,不空继续
三点整体推前,注意顺序,因为有些点一旦改名就找不到了,比如此时的 cur,还有某些点不需要照顾如 pre,所以顺序来了,
pre=cur,cur=next,next=next

直接重复上一段操作,for 起来
埋了一个 bug,不提示
回去实现看看对不对

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

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

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

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

© 2021 V2EX