1. Per-Query Linear Iteration
Intuition
For each query [l, r], loop index i from l to r and XOR elements together.
When to apply: When there is only one query or memory cannot be allocated.
Algorithm
- Step 1: Initialize res list.
- Step 2: For each query [l, r]: cur = 0; loop i from l to r: cur ^= arr[i].
- Step 3: Append cur to res.
- Step 4: Return res.
#include <iostream>#include <vector> using namespace std; vector<int> xorQueriesBrute(const vector<int>& arr, const vector<vector<int>>& queries) { vector<int> res; res.reserve(queries.size()); for (const auto& q : queries) { int l = q[0], r = q[1]; int cur = 0; for (int i = l; i <= r; ++i) { cur ^= arr[i]; } res.push_back(cur); } return res;} int main() { vector<int> arr = {1, 3, 4, 8}; vector<vector<int>> queries = {{0, 1}, {1, 2}, {0, 3}, {3, 3}}; auto res = xorQueriesBrute(arr, queries); for (int v : res) cout << v << " "; cout << endl; // 2 7 14 8 return 0;}Time & Space Complexity
- Time complexity:
O(q * n) - Space complexity:
O(1) auxiliary space