Re: [討論] 面試遇到的考題

看板Soft_Job作者 (lichih)時間11年前 (2014/07/03 17:38), 11年前編輯推噓1(1015)
留言16則, 3人參與, 最新討論串7/27 (看更多)
※ 引述《TonyQ (自立而後立人)》之銘言: michael0728n正解啦 inp = [2 , -7 , 0, 1, 2 , 3 , 8 , -6 , 5, 0, 9, 2, 0, 1, 2 , 8, 8 , -6 , 5] max_ = inp[0] * inp[1] def f(inp): global max_ v_ = 1 for i in range(0, len(inp)): v = v_ * inp[i] if(v == 0): #v = f(inp[i+1:]) v_ = 1 else: v_ = v if(v > max_): max_ = v print v, v_ return max_ r = f(inp) print r (vincent一看到題目就覺得是O(n),然後跑來和我唸,我就練習一下python XD) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.163.66 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1404380332.A.27B.html

07/03 17:43, , 1F
你覺得你這樣是 O(n) 嗎? = =
07/03 17:43, 1F

07/03 17:55, , 2F
這根本不對
07/03 17:55, 2F

07/03 18:01, , 3F
的確是O(n) 但是是錯的
07/03 18:01, 3F

07/03 18:03, , 4F
我是不會Python啦 #v = f(inp[i+1:]) 看起來應該是遞迴
07/03 18:03, 4F

07/03 18:04, , 5F
如果是遞迴那就不會是O(n) BTW, 要這樣寫不如用for暴力法
07/03 18:04, 5F

07/03 18:04, , 6F
錯了嗎? 還是我看不懂題目? 原題的輸入算出來會是48
07/03 18:04, 6F

07/03 18:05, , 7F
這組輸入算出來會是128(1*2*8*8)
07/03 18:05, 7F

07/03 18:05, , 8F
還是可以提供我一組會算錯的數字讓我試試?
07/03 18:05, 8F

07/03 18:05, , 9F
# 號是註解的樣子 Orz XD
07/03 18:05, 9F

07/03 18:06, , 10F
那行#是註解啦,因為我本來用了recursive,後來改掉
07/03 18:06, 10F

07/03 18:06, , 11F
不過就算是recursive也沒差,因為我只是把剩下的送進去
07/03 18:06, 11F

07/03 18:07, , 12F
[-2,1,3]試試 要是輸入只有一個數那第二行怎麼辨
07/03 18:07, 12F

07/03 18:09, , 13F
的確,[-2, 1, 3]就不行了^^;
07/03 18:09, 13F

07/03 18:10, , 14F
題目是互乘,所以至少會有兩個值吧。
07/03 18:10, 14F

07/03 18:20, , 15F
這要問面試官了 要是我的話這是基本要處理的
07/03 18:20, 15F
※ 編輯: lichihwu (118.166.163.66), 07/03/2014 18:25:29

07/03 18:27, , 16F
題目是互乘,一個數字無法互乘,答案變成未定義
07/03 18:27, 16F
※ 編輯: lichihwu (61.219.119.178), 07/03/2014 19:20:15
文章代碼(AID): #1JjIIi9x (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1JjIIi9x (Soft_Job)