难题:仅使用两个变量找出数组中最常见的元素



你有一个可以包含n个整数的流。然而,它只能包含两个不同的值,但您不知道它们是哪一个。例:(7、4、4、7、7、4),(1,6日,1,1,- 1),(0,1,0,0,1,0,1)。

使用只有两个命名变量(问题是有限的内存空间),你能找到两个数字中哪一个是重复最多的(这意味着n = m, n> m或反之亦然)?假设您有这样的API hasNext(),如果数组中有更多的元素,则返回true, next()移动到下一个元素,inspect()返回数组中的当前元素。无法返回或倒带流

是。一个变量记录当前在引线中的数字,另一个记录引线的大小:

leading = stream.inspect()
lead = 0
while stream.hasNext():
    stream.next()
    if leading == stream.inspect():
        lead += 1
    elif lead > 0:
        lead -= 1
    else:
        leading = stream.inspect()
        lead = 1

最新更新