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

作者: hans0406 (飛揚輕舞)   2014-07-03 21:21:43
※ 引述《sleeper0121 (sleeper)》之銘言:
: 今天去面試,裡面有題題目是這樣:
: 寫個函式,傳個整數陣列進去,陣列裡面的整數可以是正數、負數或 0
: 請回傳一個陣列裡面相鄰互乘的最大整數值
: 例如: [2 , -7 , 0 , 2 , 3 , 8 , -6 , 5]
: 就是 2 * 3 * 8 = 48
: 再一個例子: [-2 , 0 , 3 , 5 , -7]
: 就是 3 * 5 = 15
: 請問這題思考邏輯大概是怎樣呢?
: 當下沒解出來,害我回家後還一直再想 XD
碰到0就重新開始 所以就不考慮有0的情況
答案應該就是下面三種選一
case 1 -> 偶數個負號
a[0] a[n]
++++-........-+++
└─────-─────┘
所以就是a[0]*a[1]*....*a[n]
case 2/3-> 奇數個負號
a[x]
case 2┌───────────┐
++-++++-+++++-+++
case 3 └────────────┘
a[y]
case 2 = a[0]*a[1]*.....*a[x]
case 3 = a[y]*a[y+1]*...*a[n]
所以令 tempHead = a[0]
tempFisrtNegative = a[y]
從左至右
tempHead *= a[i]
tempFirstNegative *= a[i]
if(tempHead > max) max = tempHead
if(tempFirstNegative > max) max = tempFirstNegative

Links booklink

Contact Us: admin [ a t ] ucptt.com