当前位置: 面试刷题>> 查询区间 (经典算法题500道)
虽然原题目只给出了部分信息,但基于常见的面试算法题类型,我们可以假设这是一个关于“查询区间内满足特定条件的元素”的题目。这类题目常见于数据结构和算法中,特别是与线段树、树状数组、平衡二叉搜索树(如AVL树、红黑树)或有序数组等数据结构相关。
### 题目补充描述
**题目**:给定一个非负整数数组 `nums` 和一系列查询区间 `[left, right]`,对于每个查询区间,请找出并返回该区间内所有元素的和。
### 示例
- 输入:`nums = [1, 3, 5, 7, 9, 11]`,查询区间 `[[0, 2], [1, 5], [2, 2]]`
- 输出:`[9, 25, 5]`
- 解释:第一个查询区间 `[0, 2]` 的元素和为 `1 + 3 + 5 = 9`
- 第二个查询区间 `[1, 5]` 的元素和为 `3 + 5 + 7 + 9 + 11 = 25`
- 第三个查询区间 `[2, 2]` 的元素和为 `5`
### PHP 示例代码
```php
function sumRange($nums, $queries) {
$result = [];
foreach ($queries as $query) {
$left = $query[0];
$right = $query[1];
$sum = 0;
for ($i = $left; $i <= $right; $i++) {
$sum += $nums[$i];
}
$result[] = $sum;
}
return $result;
}
$nums = [1, 3, 5, 7, 9, 11];
$queries = [[0, 2], [1, 5], [2, 2]];
$result = sumRange($nums, $queries);
print_r($result);
```
### Python 示例代码
```python
def sumRange(nums, queries):
result = []
for left, right in queries:
result.append(sum(nums[left:right+1]))
return result
nums = [1, 3, 5, 7, 9, 11]
queries = [[0, 2], [1, 5], [2, 2]]
result = sumRange(nums, queries)
print(result)
```
### JavaScript 示例代码
```javascript
function sumRange(nums, queries) {
const result = [];
queries.forEach(([left, right]) => {
let sum = 0;
for (let i = left; i <= right; i++) {
sum += nums[i];
}
result.push(sum);
});
return result;
}
const nums = [1, 3, 5, 7, 9, 11];
const queries = [[0, 2], [1, 5], [2, 2]];
const result = sumRange(nums, queries);
console.log(result);
```
以上代码示例均采用了最直接的方法,即对于每个查询区间,通过遍历数组并累加对应区间内的元素值来计算和。然而,对于大数据集和频繁查询的场景,这种方法可能效率较低。此时,可以考虑使用更高效的数据结构,如线段树或树状数组,来优化查询效率。