Skip to content

Commit c712820

Browse files
authored
Create maximum-xor-score-subarray-queries.py
1 parent 6da365c commit c712820

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Time: O(n^2 + q)
2+
# Space: O(n^2)
3+
4+
# dp
5+
class Solution(object):
6+
def maximumSubarrayXor(self, nums, queries):
7+
"""
8+
:type nums: List[int]
9+
:type queries: List[List[int]]
10+
:rtype: List[int]
11+
"""
12+
dp = [[nums[i] if j == 0 else 0 for j in xrange(len(nums)-i)] for i in xrange(len(nums))]
13+
for i in reversed(xrange(len(nums))):
14+
for l in xrange(1, len(nums)-i):
15+
dp[i][l] = dp[i][l-1]^dp[i+1][l-1]
16+
for i in reversed(xrange(len(nums))):
17+
for l in xrange(1, len(nums)-i):
18+
dp[i][l] = max(dp[i][l], dp[i][l-1], dp[i+1][l-1])
19+
return [dp[i][j-i] for i, j in queries]
20+
21+
22+
# Time: O(n^2 + q)
23+
# Space: O(n^2)
24+
# dp
25+
class Solution2(object):
26+
def maximumSubarrayXor(self, nums, queries):
27+
"""
28+
:type nums: List[int]
29+
:type queries: List[List[int]]
30+
:rtype: List[int]
31+
"""
32+
dp = [[nums[i] if i == j else 0 for j in xrange(len(nums))] for i in xrange(len(nums))]
33+
for i in reversed(xrange(len(nums))):
34+
for j in xrange(i+1, len(nums)):
35+
dp[i][j] = dp[i][j-1]^dp[i+1][j]
36+
for i in reversed(xrange(len(nums))):
37+
for j in xrange(i+1, len(nums)):
38+
dp[i][j] = max(dp[i][j], dp[i][j-1], dp[i+1][j])
39+
return [dp[i][j] for i, j in queries]

0 commit comments

Comments
 (0)