这一题,我们使用了分治法. 首先看时间复杂度为o(n^2),比较naïve的方法: 使用一个数组sum[],长度为原数组长度+1,每一个元素sum[i]为原数组中index0~i-1之和,显然当sum[j] – sum[i]就是i~j-1之和,于是我们只需要两个for来遍历所有[i, j],并且比较是否在lower~upper之间即可. 但是题目要求时间复杂度由于o(n^2),考虑使用分治 1) 分:将sum[]分为左右两部分,分别计算满足条件的[i,j] 2) 合:除了i,j都在左或者都在右,…