無更新的範圍和查詢的 C++ 程式?
我們需要計算從索引 i 到索引 j 的元素之和。由 i 和 j 索引值組成的查詢將被多次執行。
Input:arr[] = {5, 6, 3, 4, 1 } i = 1, j =3
Output: 13解釋
6 + 3 + 4 = 13
sum[] = {5, 6+5, 3+6+5, 4+3+6+5, 1+4+3+6+5 }
sum[]={5,11,14,18,19}
sum[j]-sum[i-1]=sum[3]-sum[1-1]= sum[3]-sum[0]=18-5=13此處的邏輯非常基本,先從 i 索引開始迴圈到 j 索引,總結這些索引之間的元素。但無法將這些元素儲存在額外的變數中,因此我們將使用另一個數組,在該陣列中將陣列元素與最後一個數組元素相加,然後從 i 索引減去 j 索引的值;
示例
#include <iostream>
using namespace std;
int rangeSum(int i, int j, int sum[]) {
if (i == 0)
return sum[j];
return sum[j] - sum[i - 1];
}
int main() {
int arr[] = { 5, 6, 3, 4, 1 };
int n=5;
int sum[5];
sum[0] = arr[0];
for (int i = 1; i < n; i++) {
sum[i] = arr[i] + sum[i - 1];
}
cout << rangeSum(1, 3, sum) << endl;
return 0;
}輸出
13
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP