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