※ 引述《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