第二题只有指针地址没有其他信息?如果有next,那么把point->next的所有项复制到point下,然后让point->next =
point->next->next,等于把下一节点移到这里来。
第四题,我们比如随机挑选两个人出来,让他们说对方身份,这时有这几种情况
1 都说对方是好人:此时两人可能都是好人可能都是坏人
2 都说对方是坏人:两人都是坏人
3 一个说对方是好人,一个说对方是坏人:肯定是一个好人,一个坏人
这样发现,1,2判断出来的人是一个属性,不管好坏,3则是相反属性
好,现在假设分两个组,1组表示好,0组表示坏,开始随机配对。只要属于2的,先都扔到0组去。
然后,我们随机挑一个人(用a表示)出来,问剩下所有的人,他是好人还是坏人?此时有两种情况
1 如果"好人"的答案超过半数,那么此人归类为1组,所有说他是"坏人"的人归类为0组。
2 如果"好人"的答案没有超过半数",那么此人归类为0组,所有说他是"好人"的人归类为0组。
最后一定能找出所有好人。
最坏情况是坏人都说实话,这样算法貌似比较复杂,是n平方的复杂度。
晚上要出行,目前只能想到这里,期待更好的答案。
顺便给pongba提一个意见,一次最好不要太多题,首先答案不集中,其次让人丧失想的欲望......也许是个人感觉吧,比如20道题,分四次,5道5道出比较好。
2008/5/27 pongba <pon...@gmail.com>:
--
Yours Sincerely
Kun
第一题什么意思?
第一题,我的想法是用hash做,表中顺着下来第一个只出现一次的就是题目所要求的,貌似这样不算复杂吧。
2008/5/27 pongba <pon...@gmail.com>:
--
Yours Sincerely
Kun
代码在gmail里面不好发,发到发芽网上去吧。
2008/5/28 翁翊成 <wen...@gmail.com>:
--
Yours Sincerely
Kun
2008/5/28 啊拉飞仔 <jjymh...@gmail.com>:
--
Yours Sincerely
Kun
定义两个变量,large1和large2,然后
Process( array,i )
{
if(array[i]>large1)
{
large2 = large1;
large1 = array[i];
}
else if(array[i]>large2){
large2 = array[i];
}
Process( array, ++i )
}
想得比较简单,不过这道题怎么说也要遍历一遍吧。.
8(2) 没理解这个missing,难道这个array里面的数是递增或者递减的?必然是有规律的吧?
2008/5/29 翁翊成 <wen...@gmail.com>:
--
Yours Sincerely
Kun
2008/5/31 pongba <pon...@gmail.com>:
--
Yours Sincerely
Kun
blog: www.forwind.cn
我想了一下,能不能这样,首先计算B中元素的和,假设是sumB,然后找a中和它元素和相等的,同样长度的序列(这个顺序浏览一次就可以了),中途只要找到,就匹配两者。
关于这个匹配A[flag+1,count]和B[1..m],我想的是把里面所有元素相乘,比较乘积,a1+a2+a3+...an =
a1xa2xa3x...an 的数很少,可以算特例单独排除
貌似这样算法是不是O(nm)?
2008/5/31 pongba <pon...@gmail.com>:
--
......看错题了。如果元素位置不定,貌似不能直接用kmp.......
我想了一下,能不能这样,首先计算B中元素的和,假设是sumB,然后找a中和它元素和相等的,同样长度的序列(这个顺序浏览一次就可以了),中途只要找到,就匹配两者。
关于这个匹配A[flag+1,count]和B[1..m],我想的是把里面所有元素相乘,比较乘积,a1+a2+a3+...an =
a1xa2xa3x...an 的数很少,可以算特例单独排除
貌似这样算法是不是O(nm)?
That is, find a pair <l,k> such that A[l..k] contains B[1..m] For
example, given A = 3,1,5,7,3,5,2 and B = 5,3
很明显这里A[l] = B[M]吧?如果你先找A[1..n]中所有等于B[1]的元素,那按原题的条件,就解不出 B = 5,3 的序列了。
我的理解是在A中找一个序列,序列中的元素和B中元素完全一样,但是顺序不一定一样
话说要是顺序一样,那不就是KMP?
2008/5/31 pongba <pon...@gmail.com>:
--
为什么A[l] = B[1],且A[k] = B[m]?题目说的是
很明显这里A[l] = B[M]吧?如果你先找A[1..n]中所有等于B[1]的元素,那按原题的条件,就解不出 B = 5,3 的序列了。
That is, find a pair <l,k> such that A[l..k] contains B[1..m] For
example, given A = 3,1,5,7,3,5,2 and B = 5,3
That is, find a pair <l,k> such that A[l..k] contains B[1..m] For example, given A = 3,1,5,7,3,5,2 and B = 5,3
then the smallest window is [3,5].
Amazon面试题
17. 一个n*n的矩阵数列,若此序列每一列都是增序的,求这n^2个数的中位数。
18. 给一个数组,将它们分为两部分,平均值相等。