由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一道面试题
相关主题
问一道面世题请教一道面试题
问个题: 找read-only array中duplicate的数一个找duplicate element in an array的问题
minMSwap 这题能比O(n^2)更快的解法吗CS: print all combination from an array
微软一个面试题面试题求解:remove first duplicate number from an array
求教 合并两数组 并排除重复请教一题
M家SDE offer问一个search in rotated array的问题
google 面试题我再说说我挂掉的那道题吧
请教一道面试题一道C/C++的面试题
相关话题的讨论汇总
话题: so话题: 99话题: visited话题: position话题: each
进入JobHunting版参与讨论
1 (共1页)
g******e
发帖数: 247
1
0-99 个数存在array里,如何找到重复的。 回答建一个array记录下出现的次数,
>1的为重复的。再问如果不能有额外的空间,用何方法?回答用heap,但是用heap作
sort时是O(nlogn), 不够快。提示用一个swap,最后结果会是O(2n)。 这个没回答
出, 请各位指教
f*********5
发帖数: 576
2
问题是1..99 放在array[100]吧?

【在 g******e 的大作中提到】
: 0-99 个数存在array里,如何找到重复的。 回答建一个array记录下出现的次数,
: >1的为重复的。再问如果不能有额外的空间,用何方法?回答用heap,但是用heap作
: sort时是O(nlogn), 不够快。提示用一个swap,最后结果会是O(2n)。 这个没回答
: 出, 请各位指教

z***9
发帖数: 696
3
what are the numbers? are they in the range of 0-99?
g******e
发帖数: 247
4

You are right.

【在 f*********5 的大作中提到】
: 问题是1..99 放在array[100]吧?
f*****y
发帖数: 444
5
问题是有可能有几个重复的,如果是一个重复的,全部加起来,减99*100/2最快了
c**********e
发帖数: 2007
6
two loops
for each i=0,..,99 (outerloop)
if i!=a[i] but a[i]==a[a[i]] then done.
else swap a[i] and a[a[i]] while a[i]!=i. (inner loop)
move to next i.
If there is a dup, it should be caught.
c**********e
发帖数: 2007
7
The method should be able to find any duplication.
For example, x[0]=...x[99].

【在 f*****y 的大作中提到】
: 问题是有可能有几个重复的,如果是一个重复的,全部加起来,减99*100/2最快了
K******g
发帖数: 1870
8
能解释一下么?看不懂

【在 c**********e 的大作中提到】
: two loops
: for each i=0,..,99 (outerloop)
: if i!=a[i] but a[i]==a[a[i]] then done.
: else swap a[i] and a[a[i]] while a[i]!=i. (inner loop)
: move to next i.
: If there is a dup, it should be caught.

I**A
发帖数: 2345
9
that is to say
put 1 to 1st position. 2 to 2nd position and so on, by swaping.
suppose you are going to put a 9 into 9th position, but you find in 9th
position, it already has a 9 in it, then you know that 9 has duplicates

【在 K******g 的大作中提到】
: 能解释一下么?看不懂
p*u
发帖数: 136
10
good, I thought out the same method.

【在 c**********e 的大作中提到】
: two loops
: for each i=0,..,99 (outerloop)
: if i!=a[i] but a[i]==a[a[i]] then done.
: else swap a[i] and a[a[i]] while a[i]!=i. (inner loop)
: move to next i.
: If there is a dup, it should be caught.

相关主题
M家SDE offer请教一道面试题
google 面试题一个找duplicate element in an array的问题
请教一道面试题CS: print all combination from an array
进入JobHunting版参与讨论
c**********e
发帖数: 2007
11
for(int i=0;i<100;i++) {
while(a[i]!=i) {
if(a[i]==a[a[i]]) { cout << "find dublicate"; return; }
else { int j=a[i]; a[i]=a[j]; a[j]=j; }
}
}
Each i is visited at most twice. For example, if a[0]=5, after a swap
happens at i=0, a[5]=5. Then a[5] will not be visited for i=1,2,3,4. When i=
5, as a[5]==5 is true, the while loop will not run. So a[5] is visited at
most twice (it is likely return happens at i=3). So is each other i. So the
complexity is 2n.

【在 c**********e 的大作中提到】
: two loops
: for each i=0,..,99 (outerloop)
: if i!=a[i] but a[i]==a[a[i]] then done.
: else swap a[i] and a[a[i]] while a[i]!=i. (inner loop)
: move to next i.
: If there is a dup, it should be caught.

y***m
发帖数: 7027
12
递归找岂不更省事? n?..

i=
the

【在 c**********e 的大作中提到】
: for(int i=0;i<100;i++) {
: while(a[i]!=i) {
: if(a[i]==a[a[i]]) { cout << "find dublicate"; return; }
: else { int j=a[i]; a[i]=a[j]; a[j]=j; }
: }
: }
: Each i is visited at most twice. For example, if a[0]=5, after a swap
: happens at i=0, a[5]=5. Then a[5] will not be visited for i=1,2,3,4. When i=
: 5, as a[5]==5 is true, the while loop will not run. So a[5] is visited at
: most twice (it is likely return happens at i=3). So is each other i. So the

c**********e
发帖数: 2007
13
Doesn't 递归 cost memory?

【在 y***m 的大作中提到】
: 递归找岂不更省事? n?..
:
: i=
: the

y***m
发帖数: 7027
14
cost? 进栈出栈吧
a1->5就 a5->5把老a5拿出,重复上一过程而已...

【在 c**********e 的大作中提到】
: Doesn't 递归 cost memory?
c********g
发帖数: 449
15
{dup=5050-(a[0]+.....+a[99])}
y*********e
发帖数: 518
16
不用额外空间,数组的每一个值又是在[0,100]区间的,用radix sort就可以了,
用O(n)的时间。sort好了之后再遍历一遍,就可以找到duplicate咯。

【在 g******e 的大作中提到】
: 0-99 个数存在array里,如何找到重复的。 回答建一个array记录下出现的次数,
: >1的为重复的。再问如果不能有额外的空间,用何方法?回答用heap,但是用heap作
: sort时是O(nlogn), 不够快。提示用一个swap,最后结果会是O(2n)。 这个没回答
: 出, 请各位指教

1 (共1页)
进入JobHunting版参与讨论
相关主题
一道C/C++的面试题求教 合并两数组 并排除重复
问一道关于字符串的面试题M家SDE offer
median of an array of ints, 请问这题的经典回答是什么?谢谢google 面试题
问个微软面试题请教一道面试题
问一道面世题请教一道面试题
问个题: 找read-only array中duplicate的数一个找duplicate element in an array的问题
minMSwap 这题能比O(n^2)更快的解法吗CS: print all combination from an array
微软一个面试题面试题求解:remove first duplicate number from an array
相关话题的讨论汇总
话题: so话题: 99话题: visited话题: position话题: each