在 C++ 中根據範圍求和查詢查詢初始陣列
在這個問題中,我們得到了一個大小為 N 的陣列 res[]。我們的任務是*根據給定的範圍求和查詢查詢初始陣列*。
我們需要找到一個起始陣列,在對其執行 [s, e, val] 查詢後,會返回陣列 rel[]。
每個 [s, e, val] 查詢的解決方法如下:
s -> 起始索引
e -> 結束索引
val -> 要新增到陣列中從 s 到 e 的每個元素的更新值。
讓我們來看一個例子來理解這個問題:
Input : rel[] = {7, 4, 8}
Query[][] = {{1, 2, 1},
{0, 1, 3}}
Output : {4, 0, 7}**解釋** -
initialArray = {4, 0, 7}; query = {1, 2, 1}; finalArray = {4, 1, 8}
initialArray = {4, 1, 8}; query = {0, 1, 3}; finalArray = {7, 4, 8}解決方案方法
解決這個問題的一個簡單方法是遍歷所有查詢,對所有查詢使用我們解決它的方法來解決它們,然後最後返回找到的陣列。在這裡,為了找到 initialArray,我們需要以相反的方式操作它,即從給定陣列中減去它。
示例
程式演示了我們解決方案的工作原理
#include <iostream>
using namespace std;
void calcInitialArrayQueries(int arr[], int n, int query[][3], int q) {
for (int i = 0; i < q; i++) {
for (int j = query[i][0];j <= query[i][1]; j++) {
arr[j] = arr[j] - query[i][2];
}
}
for (int i = 0; i < n; i++)
cout<<arr[i]<<" ";
}
int main() {
int arr[] = { 5, 1, 8, 2, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int query[][3] = { {0, 2, -2}, {1, 4, 3}};
int q = sizeof(query) / sizeof(query[0]);
cout<<"Initial array : "; calcInitialArrayQueries(arr, n, query, q);
return 0;
}輸出
Initial array : 7 0 7 -1 6
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP