forked from partho-maple/coding-interview-gym
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSubarray_Sort.py
27 lines (24 loc) · 823 Bytes
/
Subarray_Sort.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import math
def subarraySort(array):
minOutOfOrder = math.inf
maxOutOfOrder = -math.inf
for i in range(len(array)):
num = array[i]
if isOutOfOrder(i, num, array):
minOutOfOrder = min(minOutOfOrder, num)
maxOutOfOrder = max(maxOutOfOrder, num)
if minOutOfOrder == math.inf:
return [-1, -1]
subArrayLeftIdx = 0
while array[subArrayLeftIdx] <= minOutOfOrder:
subArrayLeftIdx += 1
subArrayRightIdx = len(array) - 1
while maxOutOfOrder <= array[subArrayRightIdx]:
subArrayRightIdx -= 1
return [subArrayLeftIdx, subArrayRightIdx]
def isOutOfOrder(i, num, array):
if i == 0:
return num > array[i + 1]
if i == len(array) - 1:
return num < array[i - 1]
return num < array[i - 1] or num > array[i + 1]