题解 | #数组求和统计#

题目链接

首先理解题意:
是否存在数组a的区间[l,r]的和 等于 b[l] + b[r]?
方法一:容易想出暴力解***超时)
		int len = a.length;
        int res = 0;
        for(int l = 0; l < len; l++) {
            for(int r = l; r < len; r++) {
                int s = 0;
                for(int i = l; i <= r; i++) {
                    s += a[i];
                }
                if(s == b[l] + b[r]) res += 1;
            }
        }
        return res;
方法二:计算出每个数组a的区间和, 方法一超时是因为太多的重复计算,方法二将各个从头至尾的区间已求出。\n

举个例子:如果想知道数组a的区间[1,3]的区间和,只需要将算一次  sumArr[r] - sumArr[l] + a[l] 解决了大量的重复计算!

		int res = 0;
        int len = a.length;
        int[] sumArr = new int[len];
        
        for(int i = 1; i < len; i++) {
            sumArr[i] = sumArr[i-1] + a[i];
        }
        
        for(int l = 0; l < len; l++) {
            for(int r = l; r < len; r++) {
                if(sumArr[r] - sumArr[l] + a[l] == b[l] + b[r]) res++;
            }
        }
        return res;

全部评论

相关推荐

等闲_:小红书基本不区分日常和暑期,你是应届实习时间够了就有转正机会,只要部门有hc
点赞 评论 收藏
分享
专业码bug百年:整个宇宙为你而闪烁
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务