#3287

Find the Maximum Sequence Value of Array

Hard
ArrayDynamic ProgrammingBit ManipulationBit ManipulationDynamic ProgrammingArray
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n)
Space
O(1)
O(n)
💡

Intuition

Time O(n)Space O(n)

Instead of generating all combinations, we can precompute the OR values for all possible segments of the array. This allows us to efficiently compute the maximum XOR value without redundant calculations.

⚙️

Algorithm

2 steps
  1. 1Step 1: Precompute the OR values for all segments of size k.
  2. 2Step 2: Use these precomputed values to calculate the maximum XOR for every valid split of the subsequence.
solution.py15 lines
1def maxSequenceValue(nums, k):
2    n = len(nums)
3    left_or = [0] * (n + 1)
4    right_or = [0] * (n + 1)
5    
6    for i in range(n):
7        left_or[i + 1] = left_or[i] | nums[i]
8    
9    for i in range(n - 1, -1, -1):
10        right_or[i] = right_or[i + 1] | nums[i]
11    
12    max_value = 0
13    for i in range(k, n - k + 1):
14        max_value = max(max_value, left_or[i] ^ right_or[i])
15    return max_value

Complexity note: The time complexity is O(n) because we only traverse the array a few times to compute the OR values, making it efficient for large inputs.

  • 1Using bitwise operations can significantly reduce the complexity of the problem.
  • 2Precomputing values helps avoid redundant calculations.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.