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

作者: pika0923 (宜安)   2014-07-03 17:18:20
※ 引述《sleeper0121 (sleeper)》之銘言:
: 今天去面試,裡面有題題目是這樣:
: 寫個函式,傳個整數陣列進去,陣列裡面的整數可以是正數、負數或 0
: 請回傳一個陣列裡面相鄰互乘的最大整數值
: 例如: [2 , -7 , 0 , 2 , 3 , 8 , -6 , 5]
: 就是 2 * 3 * 8 = 48
: 再一個例子: [-2 , 0 , 3 , 5 , -7]
: 就是 3 * 5 = 15
: 請問這題思考邏輯大概是怎樣呢?
: 當下沒解出來,害我回家後還一直再想 XD
想了一個作法 開兩個陣列存 "含有這個位子及以左的最大值和最小值"
叫他amax和amin好了
由於這題目一定是整數 在這裡絕對值要變大就要一路乘下去 不然就不乘(0的狀況)
所以 amax[x]會是 ar[x], ar[x]*amax[x-1], ar[x]*amin[x-1]三者之一
同理 amin[x]也會出現在其中
而所求的區段一定有個結尾 也一定被某個amax[x]算到 所以最後求amax的最大值即可
作者: aknow (嘎嘎)   2014-07-03 18:11:00
作者: michael0728n (蒜˙遠古)   2014-07-03 20:34:00
This algorithm is better! 學習了~~
作者: dementia (早安競女賽尻認同請分享)   2014-07-03 23:09:00
學到了
作者: twsh (斯)   2014-07-03 23:35:00

Links booklink

Contact Us: admin [ a t ] ucptt.com