>假设 Alice 选择了三个不同的整数,并将它们以随机顺序放入堆栈 S 中。编写一段简短的直线伪代码(没有循环或递归),它只使用一个比较和一个变量 x,但概率为 2/3,在此代码结束时,变量 x 将存储 Alice 三个整数中最大的一个。争论为什么你的方法是正确的。
Java 上的数据结构
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所以。。我有两种可能性在 3 -> 2/3 之间获得更大的数字