这是来自 hackerrank 的一个问题,我有一个解决方案,但有一些测试用例由于超出时间限制而失败。我不知道更好的解决方案。
求子数组中元素的总和(如果子数组中有 0,则 sum = sum + number x)
输入:数字:主数组(1-索引)
查询:
array of query: left index, right index, number x(0-indexed)
Run Code Online (Sandbox Code Playgroud)
输出:
与查询相对应的总和数组。
我对 C++ 代码的解决方案:
vector<long> findSum(vector<int>numbers, vector<vector<int>> queries)
{
vector<long>result;
long sum = 0;
int count = 0;
for(auto i : queries)
{
sum = 0;
count = 0;
int l = i[0] - 1;
int r = i[1]-1;
int x = i[2];
for(int j =l; j<r;j++)
{
sum+=numbers[j]==0?x:numbers[j];
}
result.push_back(sum);
}
return result;
}
Run Code Online (Sandbox Code Playgroud) algorithm ×1