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