假设Alice已经选择了三个不同的整数并以随机顺序将它们放入堆栈S.写一个简短的直线伪代码(没有循环或递归)只使用一个比较而只使用一个变量x,但保证概率为2/3,在此代码末尾变量x将存储最大的爱丽丝的三个整数。争论为什么你的方法是正确的。
Java上的数据结构
答案 0 :(得分:5)
x = S.pop()
return max(S.pop(), x)
解释:
我有一个S堆栈[A,B,C]
x = S.pop() // x points to A
return max(S.pop(), x) // compares B to A
一旦我知道从B和A返回最大值,就有一种可能性,即最大整数不在这两个整数(B和A)之间,即C 所以...我有两种可能性让三个之间的毛衣数量 - > 2/3