1. Direct Linear Search
Intuition
Iterate through every query [L, R]. Initialize a variable minVal with \infty and loop from index L to R, updating minVal = min(minVal, nums[i]).
Scanning takes O(R - L + 1) = O(n) time per query, totaling O(Q \cdot n) which times out for 105 queries.
When to apply: Basic prototyping when Q <= 100.
Algorithm
- Step 1: Iterate through each query [L, R].
- Step 2: Initialize minVal = INT_MAX.
- Step 3: Loop i from L to R: minVal = min(minVal, nums[i]).
- Step 4: Append minVal to answers.
- Step 5: Return answers.
#include <iostream>#include <vector>#include <algorithm>#include <climits> std::vector<int> solveBruteForce(const std::vector<int>& nums, const std::vector<std::pair<int, int>>& queries) { std::vector<int> ans; ans.reserve(queries.size()); for (const auto& q : queries) { int minVal = INT_MAX; for (int i = q.first; i <= q.second; ++i) { minVal = std::min(minVal, nums[i]); } ans.push_back(minVal); } return ans;} int main() { std::vector<int> nums = {7, 2, 3, 0, 5, 10, 3, 12, 18}; std::vector<std::pair<int, int>> queries = {{0, 4}, {4, 7}, {7, 8}}; auto res = solveBruteForce(nums, queries); for (int x : res) 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)