Skip to content

Commit fa6473d

Browse files
authored
Create odd-even-jump.py
1 parent 5dbc160 commit fa6473d

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

Python/odd-even-jump.py

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Time: O(nlogn)
2+
# Space: O(n)
3+
4+
class Solution(object):
5+
def oddEvenJumps(self, A):
6+
"""
7+
:type A: List[int]
8+
:rtype: int
9+
"""
10+
def findNext(idx):
11+
result = [None]*len(idx)
12+
stack = []
13+
for i in idx:
14+
while stack and stack[-1] < i:
15+
result[stack.pop()] = i
16+
stack.append(i)
17+
return result
18+
19+
idx = sorted(range(len(A)), key = lambda i: A[i])
20+
next_higher = findNext(idx)
21+
idx.sort(key = lambda i: -A[i])
22+
next_lower = findNext(idx)
23+
24+
odd, even = [False]*len(A), [False]*len(A)
25+
odd[-1], even[-1] = True, True
26+
for i in reversed(xrange(len(A)-1)):
27+
if next_higher[i]:
28+
odd[i] = even[next_higher[i]]
29+
if next_lower[i]:
30+
even[i] = odd[next_lower[i]]
31+
return sum(odd)

0 commit comments

Comments
 (0)