如何在java上编写伪代码来解决这个问题?

时间:2012-11-24 20:32:09

标签: java

假设Alice已经选择了三个不同的整数并以随机顺序将它们放入堆栈S.写一个简短的直线伪代码(没有循环或递归)只使用一个比较而只使用一个变量x,但保证概率为2/3,在此代码末尾变量x将存储最大的爱丽丝的三个整数。争论为什么你的方法是正确的。

Java上的数据结构

1 个答案:

答案 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