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

作者: lichihwu (lichih)   2014-07-03 17:38:50
※ 引述《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)
作者: manlike ( )   2014-07-03 17:43:00
你覺得你這樣是 O(n) 嗎? = =
作者: michaelz   2014-07-03 17:55:00
這根本不對的確是O(n) 但是是錯的
作者: manlike ( )   2014-07-03 18:03:00
我是不會Python啦 #v = f(inp[i+1:]) 看起來應該是遞迴如果是遞迴那就不會是O(n) BTW, 要這樣寫不如用for暴力法
作者: lichihwu (lichih)   2014-07-03 18:04:00
錯了嗎? 還是我看不懂題目? 原題的輸入算出來會是48這組輸入算出來會是128(1*2*8*8)還是可以提供我一組會算錯的數字讓我試試?
作者: manlike ( )   2014-07-03 18:05:00
# 號是註解的樣子 Orz XD
作者: lichihwu (lichih)   2014-07-03 18:06:00
那行#是註解啦,因為我本來用了recursive,後來改掉不過就算是recursive也沒差,因為我只是把剩下的送進去
作者: michaelz   2014-07-03 18:07:00
[-2,1,3]試試 要是輸入只有一個數那第二行怎麼辨
作者: lichihwu (lichih)   2014-07-03 18:09:00
的確,[-2, 1, 3]就不行了^^;題目是互乘,所以至少會有兩個值吧。
作者: michaelz   2014-07-03 18:20:00
這要問面試官了 要是我的話這是基本要處理的
作者: lichihwu (lichih)   2014-07-03 18:27:00
題目是互乘,一個數字無法互乘,答案變成未定義

Links booklink

Contact Us: admin [ a t ] ucptt.com