作者elements (元素)
看板Soft_Job
標題Re: [請益] (ByteDance 面試) 兩種不同寫法的複
時間Mon Dec 5 03:21:32 2022
※ 引述《unixxxx (皓皓)》之銘言:
: ※ 引述《oopFoo》之銘言
: : 這題應該是用dict,而不是set。用dict來紀錄字元的位置,這樣就不用while來重找。
: : 面試官對你很好,提示你不要用while,讓你想其它方法,可惜你卡在n2,2n的問題上。
: 2n是分析出來的結果
: 可是平常工作都不會去看程式的邏輯啊
這不是一個 code reviewer 該有的心態
如果你在意這段程式碼,把它看懂是你的責任
如果你有建議你可以跟原作者說,你可以要求他改或封裝
如果你不在意的話,那你幹嘛管它的複雜度
: 程式要寫的讓人看得懂
: 直觀 易讀 比複雜度重要才是
原作者的寫法很明顯是 O(N)
一個 while 迴圈擺在那,很難不去看他的終止條件
現實生活中,如果你看到一個這樣的演算法
你也會想去搞懂他為什麼寫出個 O(N^2)
然後一看裡面那個迴圈馬上就會知道
其實裡面那個迴圈在所有外圈跑完以後只會執行 N 次
此外,直觀易讀並不是一個單一維度的問題
他可以硬是把它做成一層迴圈
造成你輕易的判斷他是線性複雜度(其實單一迴圈也不代表線性複雜度)
結果卻讓其他的部分變得很難理解,這並不叫做直觀
大家說原 po 運氣不好
我覺得原 po 運氣很好,面試官在面試的時候就展現出了剛愎自用的性格
就算你真的進去了,以後也很難相處
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 107.77.205.157 (美國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1670181694.A.2DC.html
1F:推 rajlleb: 推 12/05 06:49
2F:推 FatFatPig: 推推 12/05 10:53
3F:推 dmeiki: 推 12/05 12:46
4F:推 lemontea0328: 推 12/05 14:32
5F:推 a5560648: 推 12/05 15:42
6F:推 viper9709: 推 12/05 16:47
7F:→ unixxxx: 原作者的寫法很明顯是 O(N) 這句不對吧 12/05 18:17
8F:→ unixxxx: 如果很明顯就可以看出 那為什麼後面會需要討論這麼久呢 12/05 18:18
9F:推 boomberm: 沒人在理O(n)都看不出來的人,討論串都在賭爛廢物面試 12/05 21:35
10F:→ boomberm: 官 12/05 21:35
11F:→ peter98: 因為沒有人想理連O(N)都看不出來的人 那個人如果不是面 12/05 21:39
12F:→ peter98: 試官 基本上也沒啥人鳥他 還有 面試官很多也不過是工 12/05 21:40
13F:→ peter98: 作兩三年的人充當的 本來就不一定有一把刷子 更不用說 12/05 21:40
14F:→ peter98: 兩把刷子了 12/05 21:40
15F:推 unixxxx: 看不出複雜度也不代表演算法不強吧 以小放大 12/05 22:31
16F:→ peter98: 你滿堅持己見的 你好就好~ 沒關係 12/05 22:58
17F:→ stkoso: 看不出來也不代表不強? 那面試官問複雜度衝三小 12/05 23:36
18F:→ brucetu: 呃 這個如果沒辦法明顯看出是O(N) 應該是很少做演算法 12/06 00:32
19F:→ brucetu: 也沒在刷題 12/06 00:32
20F:→ brucetu: 就算真的第一眼沒認真看 沒看出來 原作者已經給解釋了 12/06 00:34
21F:→ brucetu: 真的就只是一個剛愎自用的面試官 12/06 00:34
22F:→ brucetu: 應該是拉不下臉承認看錯 12/06 00:34
23F:→ unixxxx: 又不是每個team都很注重演算法 12/06 01:53
你要嘛:
1. 在意這段程式碼,知道它的複雜度是多少
2. 不在意這段程式碼,相信別人告訴你它的複雜度是多少
你不能要求所有人都只能用迴圈層數來表達複雜度
好讓你「剛好看得懂一段你不太在意邏輯的程式碼」
另外,能不能一眼就看出來,其實是看人,看心情,看天氣,看熟練度
你不行不代表別人不行,當大家都行的時候你應該問的是 "為什麼我不行"
而不是嗆看得懂的人說看不懂才是正常的
24F:推 sorryla: 演算法的核心就是在討論複雜度,以小放大? 呵呵 12/06 02:12
※ 編輯: elements (107.77.205.103 美國), 12/06/2022 09:29:29
25F:推 sniper2824: 天哪 真的很好笑 12/06 10:03
26F:→ shooter555: 看不出複雜度 跟演算法強 這兩者互斥 12/06 10:45
27F:推 unixxxx: 哪有大家都行 面試官不是一開始沒看出 代表寫的不夠直觀 12/06 11:05
28F:推 sniper2824: 好了啦 12/06 12:12
29F:→ stkoso: 大家都行 面試官沒看出 代表他不是大家 12/06 12:35
30F:推 Rukawa31: 樓上那個到底在回什麼… 硬要辯耶 12/06 12:37
31F:→ Rukawa31: 人家就面試Algorithm Engineer職位 什麼叫又不是每個t 12/06 12:39
32F:→ Rukawa31: eam都注重演算法 = =??? 12/06 12:39
33F:→ unixxxx: 很多演算法很強的都不會算時間複雜度 12/06 16:58
34F:→ unixxxx: 不一定會 12/06 17:01
35F:→ dnabossking: 看不出複雜度的算法強者,在下平生未聞 12/06 17:47
36F:→ Ekmund: 不注重演算法 那考演算法幹嘛...? 12/06 17:55
37F:推 sorryla: 你的強的定義可能有點低呢 12/06 18:04
38F:推 hank55663: 我認識很多很強的 這種簡單的都能輕鬆看出複雜度 12/06 19:07
39F:推 kyrie77: 不會分析複雜度怎麼好意思說演算法強… 12/06 19:09
40F:噓 xluds24805: 從一個面試者的描述就能通靈出面試關剛愎自用呀? 12/07 00:57
41F:推 chchwy: → unixxxx : 很多演算法很強的都不會算時間複雜度 12/07 03:03
42F:→ chchwy: 這句話你講的出來XDDD 12/07 03:03
43F:→ chchwy: 白眼翻到天上 你是認真的還是在搞笑 12/07 03:05
44F:推 sniper2824: 不會算到底在強什麼啦 小丑484 12/07 11:43
45F:推 sniper2824: 感覺像反串來釣魚的 笑死 12/07 11:49
46F:推 loadingN: 笑死 12/07 20:51
47F:→ unixxxx: 現代演算法很少在考慮複雜度了 12/08 02:01
48F:→ elements: 東西夠小就不需要太在乎複雜度 12/08 08:17
49F:推 lwecloud: 應該只接觸PC才會覺得演算法隨便算就好 12/08 09:19
50F:推 Killercat: 現代演算法哪有不考慮複雜度?是一堆演算法都有現成實 12/08 09:46
51F:→ Killercat: 作,coder才不用傷這個腦筋好嗎... 12/08 09:47
52F:→ stkoso: 平行世界是真的存在的 12/08 11:15
53F:推 sorryla: 層次不同就無法溝通 12/09 03:54
54F:推 Merkle: 渣男沒辦法跟肥宅溝通床上技巧的概念 12/09 15:18
55F:→ leolarrel: 野生馬卡! 12/09 16:50