查询最近和与最大最小值
编程之美2.12节。可参考
关于扩展问题,先考虑三个数的情形:首先排序,如果所有数都小于sum/3或者大于sum/3,那么肯定不会有解。不妨考虑存在小于等于sum/3的情形,可以肯定<=sum/3的数中必定要取一个。在取定了一个<=sum/3的数之后,我们可以在大于这个数的范围内寻找剩下的两个数,这时问题即转化为了初始问题。对于任意的n个数,可以递归这个过程。对于最近和问题,适当改进之后即可。
至于编程之美2.10节,算法导论中有细致的解答。其中的扩展问题,如果要保证查询到第二大的数,查询次数不会少于2N-1。分治也无法降低次数。