轩辕互动的python面试题(转)
来源:互联网 发布:济南康健网络 编辑:程序博客网 时间:2024/04/28 21:28
今天在javaeye看到两个问题,据说是轩辕互动的python面试题,其中一个是"平衡点问题",另一个是"支配点问题", 地址是http://www.javaeye.com/topic/600079 部分,那么这个点的位序就是平衡点 2.支配点问题: 我思考了一下,平衡点问题可以这么做: numbers = [1,3,5,7,8,2,4,20] #find total #find num #print answer 算法简单,而且是O(n)的,12行代码搞定,不需要他们说的那么多那么麻烦。 而第二个问题,《编程之美》里有答案。就是寻找水王那篇。 具体方法是:将序列排序,取中位数——注意,如果一个大于整体的一半,那么排序之后支配数一定在中间。(原因请参考《编程之美》) 然后验证是否正确。(因为题目说了,可能会不存在) numbers = [1,3,4,3,3] #validate #print answer 结语:其实都不难,用python写起来都是超级短的程序。算法取决于排序,13行代码。 PS:编程之美中《寻找水王》中有更好的解决方法。 原贴地址:http://hi.baidu.com/ruclin/blog/item/b8ed51d6f55441d0a044df38.html 延伸阅读:
其中两个问题的描述如下:
1.平衡点问题
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的
要求:返回任何一个平衡点
支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数,其所在位序成为支配点;比如int[] a = {3,3,1,2,3};3为支配数,0,1,4分别为支配点;
要求:返回任何一个支配点
本问题可归结为众数问题(统计学范畴),即一组数据中出现次数最多的那个数值,它可以没有也可以为多个。
使用sum函数累加所有的数。
使用一个变量fore来累加序列的前部。直到满足条件fore<(total-number)/2;
python代码如下:
total=sum(numbers)
fore=0
for number in numbers:
if fore<(total-number)/2 :
fore+=number
else:
break
if fore == (total-number)/2 :
print number
else :
print r'not found'
#calculate
numbers.sort()
lens=len(numbers)
candidate=numbers[lens/2]
N=0
for number in numbers:
if number==candidate:
N+=1
if (N>=lens/2):
print numbers[lens/2]
else :
print 'not found'
- 轩辕互动的python面试题(转)
- 轩辕互动面试题两道比较复杂的
- 轩辕互动面试题两道比较复杂的
- 轩辕互动 面试题 数括号
- exoweb(轩辕互动)机试+面试
- 轩辕互动Exoweb笔试题(一)
- 轩辕互动Exoweb笔试题(三)
- 轩辕互动Exoweb笔试题(二):小猪吃米
- Python的面试题
- 关于Python的面试题 (github)
- python的一个面试题
- 关于Python的面试题
- 常见的Python面试题
- Python 面试题(上)
- Python 面试题(下)
- Python面试题(二)
- Python 面试题(全面)
- python面试题(2)
- 黄道十二宫
- 寻找不同的道路
- 深入理解SetUID
- SQL参数化查询讲座 (九)
- SQL参数化查询讲座 (十)
- 轩辕互动的python面试题(转)
- java 是个好东西
- 程序员的团队素养
- XML操作
- 数组 指针访问
- 数组 输出
- 非经营性网站备案流程
- ROS做PPPoE服务器
- 读《我也能做CTO之程序员职业规划》心德