※ 引述《sleeper0121 (sleeper)》之銘言:
: 今天去面試,裡面有題題目是這樣:
: 寫個函式,傳個整數陣列進去,陣列裡面的整數可以是正數、負數或 0
: 請回傳一個陣列裡面相鄰互乘的最大整數值
: 例如: [2 , -7 , 0 , 2 , 3 , 8 , -6 , 5]
: 就是 2 * 3 * 8 = 48
: 再一個例子: [-2 , 0 , 3 , 5 , -7]
: 就是 3 * 5 = 15
: 請問這題思考邏輯大概是怎樣呢?
: 當下沒解出來,害我回家後還一直再想 XD
今天在 facebook 釣出高手,我想應該是最正確的演算法了
先從左邊乘過去,再從右邊乘回來,遇 0 重算,取最大值
以 { 2, -7, 0, 2, 3, 8, -6, 5 } 來說
左邊乘過去會得到 2, -14, 0, 2, 6, 48, -288, -1440
右邊乘回來會得到 5, -30, -240, -720, -1440, 0, -7, -14
幾個值,得到最大值 48
我的實作 http://ideone.com/dmOEEO
沒判斷子陣列只有一個元素的情況,不過題目也沒定義所以就算了 :p