1. Direct Range Iteration
Intuition
For each query, initialize a counter to 0 and iterate through each index i from L to R. If nums[i] > k, increment the counter. Processing each query takes O(R - L + 1) = O(n) time. With Q queries, the overall time is O(Q \cdot n), which is too slow for large inputs.
When to apply: When queries are few (Q <= 100).
Algorithm
- Step 1: Iterate through each query [L, R, k].
- Step 2: Initialize count = 0.
- Step 3: Loop i from L to R; if nums[i] > k, increment count.
- Step 4: Record count in results array.
- Step 5: Return results.
#include <iostream>#include <vector> std::vector<int> solveBruteForce(const std::vector<int>& nums, const std::vector<std::vector<int>>& queries) { std::vector<int> res; res.reserve(queries.size()); for (const auto& q : queries) { int l = q[0], r = q[1], k = q[2]; int count = 0; for (int i = l; i <= r; ++i) { if (nums[i] > k) count++; } res.push_back(count); } return res;} int main() { std::vector<int> nums = {7, 3, 9, 1, 5, 2}; std::vector<std::vector<int>> queries = {{0, 4, 4}, {1, 5, 2}, {2, 3, 5}}; auto ans = solveBruteForce(nums, queries); for (int x : ans) std::cout << x << " "; std::cout << std::endl; return 0;}Time & Space Complexity
- Time complexity:
O(Q * n) time - Space complexity:
O(1) auxiliary space (excluding results)