范文无忧网面试笔试笔试回答

师笔试题之求解一维无序数组中三个数字乘积最大值

01月08日 编辑 fanwen51.com

[小作文范例之求职信和辞职信](一)求职信(Letters of Applying for a Job) 范例: Directions: You e across a want advertisement in .51job. for a store manager of Media Books chain bookstores. Write...+阅读

思路:这道题目是个坑啊,我上来都没看直接当做之前一篇博文中求解矩阵中最大子数组和的问题了,采用动态规划的思想来解决,结果呢,只通过了10%左右,感觉很不可思议,于是重新读题发现不对了,人家说的是三个数字的乘积我这里动态规划的是两个数字的乘积,改成了三个数字的乘积也不对,瞬间郁闷了,不知道问题出现在了哪里,就只好自己在草稿纸上瞎写了,突然发现了端倪,题目给的样例也是一个坑,负数在这里是一个很关键的东西,因为:负负得正啊,那么接下来思路就有了,很简单,先对无序数组排序,那么所有的非负数肯定是出现在了数组的右端(这里默认是升序),在最左端的数可能是0,也可能是正数,也可能是负数,这里分几种情况考虑如下:1.最左端是0,那么数组中不存在负数,最大值计算为:num_list[-1]*num_list[-2]*num_list[-3]2.最左端为正数:同上3.最左端为负数,这里可能有人会说需要考虑负数的个数,其实仔细想想是不需要,这里直接把左端的最大值记为:num_list[0]*num_list[1]*num_list[-1],是不是看出来什么端倪了,对,就是这意思,如果有超过两个负数那么这个表达式计算出来的结果必定是正数而且可能是最大值,如果只有一个负数,那么出现的结果就是:这个表达式的值必然为负数,那么最大值的计算结果就同上面两种情况了有了上面的分析之后,就可以得到下面几行代码的实现了,当然核心真的只有四五行,我下面加入了一点打印信息方便看结果:[python] view plain copy#!usr/bin/env python #encoding:utf-8 ''''''' __Author功能:求解一维无序数组中三个数字乘积最大值(正负零均存在) ''' def LargetThreeNumMutiple(n, num_list): num_list = [ int(i) for i in num_list.split(' ') ] num_list.sort() return max(num_list[0] * num_list[1] * num_list[-1], num_list[-1] * num_list[-2] * num_list[-3]) if __name__ == '__main__': n = raw_input() num_list = raw_input() print '三个数字乘积最大值为:', LargetThreeNumMutiple(n, num_list) 结果如下:[html] view plain copy4 4 3 2 1 三个数字乘积最大值为: 24 7 0 9 -5 7 1 3 2 三个数字乘积最大值为: 189 5 0 1 6 11 4 三个数字乘积最大值为: 264 10 -3 -5 -7 -11 -9 0 3 5 67 1 三个数字乘积最大值为: 6633 15 -34 23 45 6 7 0 0 -12 -32 -45 90 44 55 90 -100 三个数字乘积最大值为: 445500

延伸阅读:

面试技巧之求职实录为你引路面试技巧之求职实录为你引路:周炜,本市某名牌高校理科冷门专业毕业生,目前供职于一家管理咨询公司和他一拨进咨询业的,大多是经济管理专业的学生。周炜在他们那届毕业生里也算小...

面试技巧之求职者不宜尝试“新鲜”面试技巧之求职者不宜尝试新鲜:我在面试前花了一天时间去弄头发,本想以靓丽的造型让用人单位眼前一亮,但却不奏效。男生不像女生那么爱打扮,面试的时候是不是就没有什么着装准备...

面试技巧之求职要学会主动面试技巧之求职要学会主动主动求职要因人而异主动并不是对任何公司都会有用处,如果拿不准主意,可以事先请熟人帮忙看该公司的人事部经理是否欣赏主动精神,而有些人事经理更欣赏...

考研英语写作应用文之求职信精选三篇求职信范文1 Dear Sir or Madam, I am writing to express my interest in your recently advertised position for a waitress. Enclosed with this letter is my resume,...

职场攻略之求职7大技巧途径一:海投简历网申 最常用的方式。投递过程有两种方式: 1、发送简历到指定邮箱。 2、填写对方公司的网申表格。招聘网站和求职社区都是很好的网申信息获取途径。网申时必须...

推荐阅读
图文推荐
栏目列表