由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - GOOGLE 电面面经
相关主题
Amazon电面面经FB电面面经,顺便求各种referral
一个小公司面经Facebook 电面
finding the majority element in an array?求教一个onsite面试题目
two sigma电面面经各产业 BONUS 差别
Amazon电面面经请教SQL面试题
google 面试题疑问The time complexity on finding the kth largest element in a
a电面面经来做一个暴力题
分享Facebook电面面经向各位大侠请教几道面试题的思路
相关话题的讨论汇总
话题: votes话题: int话题: maj话题: array话题: vote
进入JobHunting版参与讨论
1 (共1页)
w****l
发帖数: 88
1
刚面完,感觉一般,估计挂了....
寒暄,文件里上的project,接下来算法:
find majority element in an array. 我说用hash table,但是空间效率
低,我自己说了个constant space的idea, 写code。 写完问我怎么extend
to最一般的情况, 我说了自己的idea, 然后说什么时间不够了,就不用写代码了,
他理解啥的.....
b******v
发帖数: 1493
2
你的constant space的idea是什么呀


extend
写代码了,
.....

【在 w****l 的大作中提到】
: 刚面完,感觉一般,估计挂了....
: 寒暄,文件里上的project,接下来算法:
: find majority element in an array. 我说用hash table,但是空间效率
: 低,我自己说了个constant space的idea, 写code。 写完问我怎么extend
: to最一般的情况, 我说了自己的idea, 然后说什么时间不够了,就不用写代码了,
: 他理解啥的.....

f****4
发帖数: 1359
3
同问
w****l
发帖数: 88
4
就是用一个vote变量,把这些数字想像成选举时候的candidate, 让一开始的element =
array[0], 然后从数组第一个元素开始,如果等于element,vote++,如果不相等,
vote--,当 vote 小于0的时候设为1 。(我以前复习的时候从一个人的博客里看来的,觉得挺好,
就记下来了。不是本人原始想法,本人是菜鸟级的).

【在 b******v 的大作中提到】
: 你的constant space的idea是什么呀
:
: 。
: extend
: 写代码了,
: .....

f****4
发帖数: 1359
5
可他只要知道那个数是majority啊,只要碰到相同ele vote++就好了啊
还有,啥叫最一般的情况啊?
谢谢

=
,觉得挺好,

【在 w****l 的大作中提到】
: 就是用一个vote变量,把这些数字想像成选举时候的candidate, 让一开始的element =
: array[0], 然后从数组第一个元素开始,如果等于element,vote++,如果不相等,
: vote--,当 vote 小于0的时候设为1 。(我以前复习的时候从一个人的博客里看来的,觉得挺好,
: 就记下来了。不是本人原始想法,本人是菜鸟级的).

f******6
发帖数: 723
6
is this for summer intern or full-time position?
Good luck!
w****l
发帖数: 88
7
majority 定义是大于n/2的occurrence, 他问n/k怎么用vote的idea 做,我说用两个
vote变
量。

【在 f****4 的大作中提到】
: 可他只要知道那个数是majority啊,只要碰到相同ele vote++就好了啊
: 还有,啥叫最一般的情况啊?
: 谢谢
:
: =
: ,觉得挺好,

w****l
发帖数: 88
8
New Graduate Full Time Position, Mountain View

【在 f******6 的大作中提到】
: is this for summer intern or full-time position?
: Good luck!

b******v
发帖数: 1493
9
这样的话,要扫描很多次吧?

=
,觉得挺好,

【在 w****l 的大作中提到】
: 就是用一个vote变量,把这些数字想像成选举时候的candidate, 让一开始的element =
: array[0], 然后从数组第一个元素开始,如果等于element,vote++,如果不相等,
: vote--,当 vote 小于0的时候设为1 。(我以前复习的时候从一个人的博客里看来的,觉得挺好,
: 就记下来了。不是本人原始想法,本人是菜鸟级的).

w****l
发帖数: 88
10
一次就够了....

【在 b******v 的大作中提到】
: 这样的话,要扫描很多次吧?
:
: =
: ,觉得挺好,

相关主题
google 面试题疑问FB电面面经,顺便求各种referral
a电面面经Facebook 电面
分享Facebook电面面经求教一个onsite面试题目
进入JobHunting版参与讨论
b******v
发帖数: 1493
11
你第一次的扫描只是对array[0] vote吧
难道不要对array[1]...array[n-1]也做一次vote吗?

【在 w****l 的大作中提到】
: 一次就够了....
w****l
发帖数: 88
12
如果这么理解的话那就是多次扫描了,我个人认为constant time可以得到array[i]],
所以整个数
组就是依次扫描了,难道是多次扫描? 不理解中....请指教....

【在 b******v 的大作中提到】
: 你第一次的扫描只是对array[0] vote吧
: 难道不要对array[1]...array[n-1]也做一次vote吗?

f****4
发帖数: 1359
13
哦,我把majority理解错了
可那样的话,还是只需要统计每个ele的出现次数啊,最后扫描出现次数大于n/2的就是
;这样的话对n/k的也能不做修改直接实现啊(只要比较出现次数大于n/k的就好了)
bless

【在 w****l 的大作中提到】
: majority 定义是大于n/2的occurrence, 他问n/k怎么用vote的idea 做,我说用两个
: vote变
: 量。

d*******8
发帖数: 785
14
不用的呀,当vote变零的时候 你也要更新Element然后重置vote为一

【在 b******v 的大作中提到】
: 你第一次的扫描只是对array[0] vote吧
: 难道不要对array[1]...array[n-1]也做一次vote吗?

c********t
发帖数: 1756
15
如果 ele > n/2 楼主的方法可行。如果是n/k, 搂主能不能讲讲两个votes 的方法。
l******4
发帖数: 207
16
co-ask

【在 c********t 的大作中提到】
: 如果 ele > n/2 楼主的方法可行。如果是n/k, 搂主能不能讲讲两个votes 的方法。
f****e
发帖数: 30
17
how to do that?

【在 w****l 的大作中提到】
: majority 定义是大于n/2的occurrence, 他问n/k怎么用vote的idea 做,我说用两个
: vote变
: 量。

a***9
发帖数: 364
18
lz的做法只用到constant space, 扫描一次就够了,
如果统计每个数出现的次数 就不是constant space了

【在 f****4 的大作中提到】
: 哦,我把majority理解错了
: 可那样的话,还是只需要统计每个ele的出现次数啊,最后扫描出现次数大于n/2的就是
: ;这样的话对n/k的也能不做修改直接实现啊(只要比较出现次数大于n/k的就好了)
: bless

a***9
发帖数: 364
19
make clear一件事,大于n/k的majority也是只有一个数么?并且所有的数都不超过n/k
吗?

【在 w****l 的大作中提到】
: majority 定义是大于n/2的occurrence, 他问n/k怎么用vote的idea 做,我说用两个
: vote变
: 量。

w****l
发帖数: 88
20
不是这个意思, 有可能有两个,比如k=3,那么就是要找出现频率 超过n/3的数, 至于
其他数是不是
也都小于这个数,不清楚....所以我一时没想出什么解法来...sigh.....估计是挂面了
....

/k

【在 a***9 的大作中提到】
: make clear一件事,大于n/k的majority也是只有一个数么?并且所有的数都不超过n/k
: 吗?

相关主题
各产业 BONUS 差别来做一个暴力题
请教SQL面试题向各位大侠请教几道面试题的思路
The time complexity on finding the kth largest element in aamazon 电面问题 求解答, 在线等
进入JobHunting版参与讨论
a***9
发帖数: 364
21
这个code测试了么 是到vote=0的时候往后就换成后面一个element吧

=
,觉得挺好,

【在 w****l 的大作中提到】
: 就是用一个vote变量,把这些数字想像成选举时候的candidate, 让一开始的element =
: array[0], 然后从数组第一个元素开始,如果等于element,vote++,如果不相等,
: vote--,当 vote 小于0的时候设为1 。(我以前复习的时候从一个人的博客里看来的,觉得挺好,
: 就记下来了。不是本人原始想法,本人是菜鸟级的).

a***9
发帖数: 364
22
2个变量怎么整?
如果 k = 4, 就有可能有3个大于n/4的元素吧
猜测可以用k-1个vote, 增vote时不用++,用vote+=k-1,减就用--,到0时换成后面的
元素

【在 w****l 的大作中提到】
: majority 定义是大于n/2的occurrence, 他问n/k怎么用vote的idea 做,我说用两个
: vote变
: 量。

w****l
发帖数: 88
23
测试过了,是正确的,至于扩展的版本,我还没有完全想明白......不好意思.....

【在 a***9 的大作中提到】
: 这个code测试了么 是到vote=0的时候往后就换成后面一个element吧
:
: =
: ,觉得挺好,

a***9
发帖数: 364
24
问一下element的元素不更新?那如果不是arr[0]怎么找的出来啊。。可能我理解错了
你意思

【在 w****l 的大作中提到】
: 测试过了,是正确的,至于扩展的版本,我还没有完全想明白......不好意思.....
w****l
发帖数: 88
25
我贴一下code 吧,基本版本,扩展的没想好:
#include
#include
int findMajorityElem(int array[], int n){

int maj_index =0;

int votes = 1;

for (int i = 1; i< n; i++){
if (array[i] == array[maj_index] ){
votes ++;
}else if(votes >0){
votes--;
}else{
maj_index = i;
votes = 1;
}
}

return array[maj_index];
}
//For testing purpose
int main(){
int arr[] ={1,3,3,3,1,2};

int nu
a***9
发帖数: 364
26
对的吧。 你还是更新了的

【在 w****l 的大作中提到】
: 我贴一下code 吧,基本版本,扩展的没想好:
: #include
: #include
: int findMajorityElem(int array[], int n){
:
: int maj_index =0;
:
: int votes = 1;
:
: for (int i = 1; i< n; i++){

b*******y
发帖数: 239
27
Google 电面我挂了
c********t
发帖数: 1756
28
大于n/k的element, 是不是得把数组无序变有序再找,preprocess: O(nlg(n)),
search time O(n)
r**********1
发帖数: 292
29
对于[3,1,2,3]这个数组,你的findMajorityElem返回值是2,应该是3.
int findMajorityElem(int array[], int n){

int maj_index =0;

int votes = 1;

for (int i = 1; i< n; i++){
if (array[i] == array[maj_index] ){
votes ++;
}else if(votes >0){
votes--;
}else{
maj_index = i;
votes = 1;
}
}

return array[maj_index];
}
b******v
发帖数: 1493
30
对,他那个算法有问题

【在 r**********1 的大作中提到】
: 对于[3,1,2,3]这个数组,你的findMajorityElem返回值是2,应该是3.
: int findMajorityElem(int array[], int n){
:
: int maj_index =0;
:
: int votes = 1;
:
: for (int i = 1; i< n; i++){
: if (array[i] == array[maj_index] ){
: votes ++;

相关主题
Interview Question一个小公司面经
MS sdet面经 + bloomberg电面面经finding the majority element in an array?
Amazon电面面经two sigma电面面经
进入JobHunting版参与讨论
f****4
发帖数: 1359
31
如果不是还有别的条件没讲清楚的话
这个votes的办法是求不出majority的

【在 r**********1 的大作中提到】
: 对于[3,1,2,3]这个数组,你的findMajorityElem返回值是2,应该是3.
: int findMajorityElem(int array[], int n){
:
: int maj_index =0;
:
: int votes = 1;
:
: for (int i = 1; i< n; i++){
: if (array[i] == array[maj_index] ){
: votes ++;

l******4
发帖数: 207
32
I have the similar solution.
There is k-1 votes.
each time check the k-1 votes. Here is the pseudocode.
for(i = 0 to n-1)
{
flag = true;
for (j = 0 to k-1)
{
if (a[i] == vote[j])
{
count[j]+=(k-1);
flag = false;
}
if ((a[i]!= vote[j]) &&(count[j] !=0)
{
count[j]--;
}
}
if (flag)
{
for (j = 0 to k-1)
{
if (count[j] == 0)
{
cou

【在 a***9 的大作中提到】
: 2个变量怎么整?
: 如果 k = 4, 就有可能有3个大于n/4的元素吧
: 猜测可以用k-1个vote, 增vote时不用++,用vote+=k-1,减就用--,到0时换成后面的
: 元素

w****l
发帖数: 88
33
条件是: more than n/2,不包括n/2,所以我认为那个算法还在这个条件下是work 的
b******v
发帖数: 1493
34
这样好像是可以的

【在 w****l 的大作中提到】
: 条件是: more than n/2,不包括n/2,所以我认为那个算法还在这个条件下是work 的
b******n
发帖数: 823
35
basic idea就是每次pair两个不同的element干掉,到最后剩下的就是majority;
同样的idea应该可以用到大于n/k的情况,每次pair k个不同element干掉,但是这个肯定达不到constant time
h**6
发帖数: 4160
36
这个就是编程之美超级灌水王的问题。
在大小为n的数组里寻找(k-1)个超过(n/k)的数的复杂度为O(nk),需要空间O(k)
r**********1
发帖数: 292
37
是。条件也是n出现的次数是大于N/2(不包括这个,所以我的例子不对)

【在 h**6 的大作中提到】
: 这个就是编程之美超级灌水王的问题。
: 在大小为n的数组里寻找(k-1)个超过(n/k)的数的复杂度为O(nk),需要空间O(k)

1 (共1页)
进入JobHunting版参与讨论
相关主题
向各位大侠请教几道面试题的思路Amazon电面面经
amazon 电面问题 求解答, 在线等google 面试题疑问
Interview Questiona电面面经
MS sdet面经 + bloomberg电面面经分享Facebook电面面经
Amazon电面面经FB电面面经,顺便求各种referral
一个小公司面经Facebook 电面
finding the majority element in an array?求教一个onsite面试题目
two sigma电面面经各产业 BONUS 差别
相关话题的讨论汇总
话题: votes话题: int话题: maj话题: array话题: vote