区间求和 I
来源:互联网 发布:java会议室预定系统 编辑:程序博客网 时间:2024/04/30 04:16
给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数[start, end]
。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的总和,并返回在结果列表中。
样例
对于数组 [1,2,7,8,5]
,查询[(1,2),(0,4),(2,4)]
, 返回 [9,23,20]
/** * Definition of Interval: * classs Interval { * int start, end; * Interval(int start, int end) { * this->start = start; * this->end = end; * } */class Solution { public: /** *@param A, queries: Given an integer array and an query list *@return: The result list */ vector<long long> intervalSum(vector<int> &A, vector<Interval> &queries) { // write your code here vector<long long> result; int m = A.size(); int n = queries.size(); if (m < 1 || n < 1) { return result; } long long node[m*4+10]; build(node, A, 1, 0, m-1); for (int i = 0; i < n; i++) { result.push_back(query(node, 1, 0, m-1, queries[i].start, queries[i].end)); } return result; }private: void build(long long *node, vector<int> &A, int pos, int begin, int end) { if (begin == end) { node[pos] = A[begin]; } else { build(node, A, 2*pos, begin, (begin+end)/2); build(node, A, 2*pos+1, (begin+end)/2+1, end); node[pos] = node[2*pos] + node[2*pos+1]; } } long long query(long long *node, int pos, int begin, int end, int left, int right) { long long p1, p2; if (left > end || right < begin) { return 0; } if (begin >= left && end <= right) { return node[pos]; } p1 = query(node, 2*pos, begin, (begin+end)/2, left, right); p2 = query(node, 2*pos+1, (begin+end)/2+1, end, left, right); return p1+p2; }};
0 0
- 题目:区间求和 I
- 区间求和 I
- 区间求和 I -LintCode
- lintcode--区间求和 I
- 解题报告:区间求和 I
- lintcode-区间求和I-206
- 206.Interval Sum-区间求和 I(中等题)
- 区间求和
- 树状数组--区间求和
- 线段树区间求和
- 区间求和Ⅱ
- 【POJ3067】Japan-区间求和
- LintCode:区间求和
- LintCode:区间求和 II
- 树状数组,区间求和
- 区间求和 II -LintCode
- 区间求和II
- I - 多项式求和
- TITLE: UVA 11292Dragon of Loowater
- 没有躲过的坑--头文件相互包含(Compiler error C2653: not a class or namespace name)
- Win7系统下如何配置Tomcat支持PHP和Perl
- 对于ppt设计的一些感悟
- web页面上显示当前系统时间
- 区间求和 I
- POJ 1426 好玩的打表题(bfs+大整数取模)
- String类
- web用户退出清空网页缓存
- UIWebView基本使用
- poj 3335(半平面交)
- Matlab畫地圖
- android 透明度计算
- 一种基于 HTTP 长连接的“服务器推”技术在web端的应用