Re: [請益] (ByteDance 面試) 兩種不同寫法的複

軟工

39231

: ※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1670181694.A.2DC.html
rajlleb1樓 12/05 06:49
FatFatPig2樓推推 12/05 10:53
dmeiki3樓 12/05 12:46
lemontea03284樓 12/05 14:32
a55606485樓 12/05 15:42
viper97096樓 12/05 16:47
unixxxx7樓原作者的寫法很明顯是 O(N) 這句不對吧 12/05 18:17
unixxxx8樓如果很明顯就可以看出 那為什麼後面會需要討論這麼久呢 12/05 18:18
boomberm9樓沒人在理O(n)都看不出來的人,討論串都在賭爛廢物面試 12/05 21:35
boomberm10樓 12/05 21:35
peter9811樓因為沒有人想理連O(N)都看不出來的人 那個人如果不是面 12/05 21:39
peter9812樓試官 基本上也沒啥人鳥他 還有 面試官很多也不過是工 12/05 21:40
peter9813樓作兩三年的人充當的 本來就不一定有一把刷子 更不用說 12/05 21:40
peter9814樓兩把刷子了 12/05 21:40
unixxxx15樓看不出複雜度也不代表演算法不強吧 以小放大 12/05 22:31
peter9816樓你滿堅持己見的 你好就好~ 沒關係 12/05 22:58
stkoso17樓看不出來也不代表不強? 那面試官問複雜度衝三小 12/05 23:36
brucetu18樓呃 這個如果沒辦法明顯看出是O(N) 應該是很少做演算法 12/06 00:32
brucetu19樓也沒在刷題 12/06 00:32
brucetu20樓就算真的第一眼沒認真看 沒看出來 原作者已經給解釋了 12/06 00:34
brucetu21樓真的就只是一個剛愎自用的面試官 12/06 00:34
brucetu22樓應該是拉不下臉承認看錯 12/06 00:34
unixxxx23樓又不是每個team都很注重演算法 12/06 01:53
你要嘛: 1. 在意這段程式碼,知道它的複雜度是多少 2. 不在意這段程式碼,相信別人告訴你它的複雜度是多少 你不能要求所有人都只能用迴圈層數來表達複雜度 好讓你「剛好看得懂一段你不太在意邏輯的程式碼」 另外,能不能一眼就看出來,其實是看人,看心情,看天氣,看熟練度 你不行不代表別人不行,當大家都行的時候你應該問的是 "為什麼我不行" 而不是嗆看得懂的人說看不懂才是正常的
sorryla24樓演算法的核心就是在討論複雜度,以小放大? 呵呵 12/06 02:12
sniper282425樓天哪 真的很好笑 12/06 10:03
shooter55526樓看不出複雜度 跟演算法強 這兩者互斥 12/06 10:45
unixxxx27樓哪有大家都行 面試官不是一開始沒看出 代表寫的不夠直觀 12/06 11:05
sniper282428樓好了啦 12/06 12:12
stkoso29樓大家都行 面試官沒看出 代表他不是大家 12/06 12:35
Rukawa3130樓樓上那個到底在回什麼… 硬要辯耶 12/06 12:37