由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个电面题
相关主题
A家一道题amazon 一道题
也问一个算法题一道a家电面题目
两道algorithm电面题(update 答案)问一道题(8)
贡献一次电面题贡献几道CS电面题
算法题:两列找共同元素有O(n)的算法吗?分享下Google电面题
求教一个onsite面试题目amazon 电面题
问一道电面题一道电面题
数组里面找数个出现了奇数次的整数,怎么找?说说 以前面试遇到的 house robber 变种
相关话题的讨论汇总
话题: majority话题: int话题: count话题: arr话题: 出现
进入JobHunting版参与讨论
1 (共1页)
O*2
发帖数: 178
1
给你一个数列,不知道长度,一个一个给,其中一个数出现次数超过半数
(如果数列长度2N+1,这个数出现不少于N+1,但是N事先未知)
怎么样找出这个数?
似乎听说过这个题,有提示吗?多谢
r*******y
发帖数: 1081
2
if the range of the numbers known, then hash can be used ?

【在 O*2 的大作中提到】
: 给你一个数列,不知道长度,一个一个给,其中一个数出现次数超过半数
: (如果数列长度2N+1,这个数出现不少于N+1,但是N事先未知)
: 怎么样找出这个数?
: 似乎听说过这个题,有提示吗?多谢

g**********y
发帖数: 14569
3
似乎只能把所有数都用hashtable保存下来吧。
不管你现在看见些什么数,到最后,每一个出现过的数,甚至还没出现的数,都有可能
是正确答案。
s*****n
发帖数: 5488
4
majority voting algorithm
int MajorityVoting(int arr[], int n)
{
int majority;
int count = 0;
for (int i = 0; i < n; i++)
{
if (count > 0)
{
if (majority == arr[i])
count++;
else
count--;
}
else
{
count ++;
majority = arr[i];
}
}
return majority;
}
hint:思路类似一个array所有的数even只有一个是odd.

【在 O*2 的大作中提到】
: 给你一个数列,不知道长度,一个一个给,其中一个数出现次数超过半数
: (如果数列长度2N+1,这个数出现不少于N+1,但是N事先未知)
: 怎么样找出这个数?
: 似乎听说过这个题,有提示吗?多谢

g**********y
发帖数: 14569
5


【在 s*****n 的大作中提到】
: majority voting algorithm
: int MajorityVoting(int arr[], int n)
: {
: int majority;
: int count = 0;
: for (int i = 0; i < n; i++)
: {
: if (count > 0)
: {
: if (majority == arr[i])

g**********y
发帖数: 14569
6
hint:思路类似一个array所有的数even只有一个是odd.
那是什么题?
s*****y
发帖数: 897
7
我就记得是UT Austin发明的,死活想不起名字了,多谢提醒
这里还有demo
http://www.cs.utexas.edu/~moore/best-ideas/mjrty/index.html

【在 s*****n 的大作中提到】
: majority voting algorithm
: int MajorityVoting(int arr[], int n)
: {
: int majority;
: int count = 0;
: for (int i = 0; i < n; i++)
: {
: if (count > 0)
: {
: if (majority == arr[i])

g**e
发帖数: 6127
8
一个array所有数都出现偶数次,只有一个出现奇数次,要找到这个数。XOR可解。
当然如果这个数是0,那就只能vote了

【在 g**********y 的大作中提到】
: hint:思路类似一个array所有的数even只有一个是odd.
: 那是什么题?

g**********y
发帖数: 14569
9
哦,我还奇怪,要是只有一个奇数,把它找出来,还需要什么vote呢?

【在 g**e 的大作中提到】
: 一个array所有数都出现偶数次,只有一个出现奇数次,要找到这个数。XOR可解。
: 当然如果这个数是0,那就只能vote了

d*******d
发帖数: 2050
10
如果是0的话,也不用vote,最后xor结果就是0阿.

【在 g**e 的大作中提到】
: 一个array所有数都出现偶数次,只有一个出现奇数次,要找到这个数。XOR可解。
: 当然如果这个数是0,那就只能vote了

相关主题
求教一个onsite面试题目amazon 一道题
问一道电面题一道a家电面题目
数组里面找数个出现了奇数次的整数,怎么找?问一道题(8)
进入JobHunting版参与讨论
h*********n
发帖数: 11319
11
同疑惑

【在 d*******d 的大作中提到】
: 如果是0的话,也不用vote,最后xor结果就是0阿.
x******2
发帖数: 546
12
不用hash,线性扫一遍就行了。
每次舍弃2个不同的数,因为那个数超过半数,所以最后剩下的必然是所求

【在 O*2 的大作中提到】
: 给你一个数列,不知道长度,一个一个给,其中一个数出现次数超过半数
: (如果数列长度2N+1,这个数出现不少于N+1,但是N事先未知)
: 怎么样找出这个数?
: 似乎听说过这个题,有提示吗?多谢

g**e
发帖数: 6127
13
我的理解是你不知道最后结果是0,还是array里根本没有出现奇数次的数字。这个逻辑
严密
的程序应该是能给出判断的

【在 h*********n 的大作中提到】
: 同疑惑
O*2
发帖数: 178
14
thx

【在 s*****n 的大作中提到】
: majority voting algorithm
: int MajorityVoting(int arr[], int n)
: {
: int majority;
: int count = 0;
: for (int i = 0; i < n; i++)
: {
: if (count > 0)
: {
: if (majority == arr[i])

O*2
发帖数: 178
15
thx

【在 x******2 的大作中提到】
: 不用hash,线性扫一遍就行了。
: 每次舍弃2个不同的数,因为那个数超过半数,所以最后剩下的必然是所求

O*2
发帖数: 178
16
如果没有出现奇数次的数,那么总数应该是偶数,如果有的话且xor结果为零,
那么这个数就应该是零

【在 g**e 的大作中提到】
: 我的理解是你不知道最后结果是0,还是array里根本没有出现奇数次的数字。这个逻辑
: 严密
: 的程序应该是能给出判断的

e******s
发帖数: 38
17
请问
如果没有任何一个数超过一半,这个算法是不是有可能随便返回一个出现次数很少的数?

【在 s*****n 的大作中提到】
: majority voting algorithm
: int MajorityVoting(int arr[], int n)
: {
: int majority;
: int count = 0;
: for (int i = 0; i < n; i++)
: {
: if (count > 0)
: {
: if (majority == arr[i])

1 (共1页)
进入JobHunting版参与讨论
相关主题
说说 以前面试遇到的 house robber 变种算法题:两列找共同元素有O(n)的算法吗?
这些找missing number的题是不是都不能用求和做?求教一个onsite面试题目
bloomberg 店面问一道电面题
今天又被recuiter 鄙视了,大家来教育下我吧。数组里面找数个出现了奇数次的整数,怎么找?
A家一道题amazon 一道题
也问一个算法题一道a家电面题目
两道algorithm电面题(update 答案)问一道题(8)
贡献一次电面题贡献几道CS电面题
相关话题的讨论汇总
话题: majority话题: int话题: count话题: arr话题: 出现