0

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

Java 上的数据结构

4

1 回答 1

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

于 2012-11-24T20:35:53.473 回答