Re: [讨论] 面试遇到的考题

楼主: lovdkkkk (dk)   2014-07-03 18:32:50
※ 引述《sleeper0121 (sleeper)》之铭言:
: 今天去面试,里面有题题目是这样:
: 写个函式,传个整数阵列进去,阵列里面的整数可以是正数、负数或 0
: 请回传一个阵列里面相邻互乘的最大整数值
: 例如: [2 , -7 , 0 , 2 , 3 , 8 , -6 , 5]
: 就是 2 * 3 * 8 = 48
: 再一个例子: [-2 , 0 , 3 , 5 , -7]
: 就是 3 * 5 = 15
: 请问这题思考逻辑大概是怎样呢?
: 当下没解出来,害我回家后还一直再想 XD
1. 用 0 切但 0 不可以去掉
ex -1, 0, -2
最大值是 0, 去掉就只剩负的
(如题目改为最大正整数则无解)
EDIT: 假如一定要 "互乘" 不能取单一个数, 则此例改为
-1, 1, 0, -2, 1
2. 除零外的子数列:
2.1 含一个负数则以该负数为切点再切
2.2 含二个 (含) 以上的偶数个负数则取全数列
2.3 含三个 (含) 以上的奇数个负数则取以下两个数列
子数列第一个值取到子数列中最后一个负数之前
子数列中第一个负数之后取到子数列的最后一个值
ex: 1, -2, 1, -2, -3, 1
则取 1, -2, 1, -2 和 1, -2, -3, 1 两者
逻辑大概这样, 程式就算了, 没想清楚的细节也算了 XD
作者: descent (“雄辩是银,沉默是金”)   2014-07-03 19:04:00
有回答问题的网友们, 你们花了多久想出解法
楼主: lovdkkkk (dk)   2014-07-03 19:55:00
大概有十分钟?
作者: cckk3333 (皓月)   2014-07-03 20:11:00
2~3分钟 不过我类似题目曾经想蛮久的orz这类题目还是很吃经验

Links booklink

Contact Us: admin [ a t ] ucptt.com