Skip to content

Commit f72a5cd

Browse files
authored
Create minimum-number-of-removals-to-make-mountain-array.py
1 parent dab1aa5 commit f72a5cd

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Time: O(nlogn)
2+
# Space: O(n)
3+
4+
import bisect
5+
6+
7+
class Solution(object):
8+
def minimumMountainRemovals(self, nums):
9+
"""
10+
:type nums: List[int]
11+
:rtype: int
12+
"""
13+
left_lis_len = [0]*len(nums)
14+
lis = []
15+
for i in xrange(len(nums)-1):
16+
j = bisect.bisect_left(lis, nums[i])
17+
if j == len(lis):
18+
lis.append(nums[i])
19+
else:
20+
lis[j] = nums[i]
21+
left_lis_len[i] = j
22+
max_len = 0
23+
lis = []
24+
for i in reversed(xrange(1, len(nums))):
25+
j = bisect.bisect_left(lis, nums[i])
26+
if j == len(lis):
27+
lis.append(nums[i])
28+
else:
29+
lis[j] = nums[i]
30+
if i < len(nums)-1:
31+
max_len = max(max_len, left_lis_len[i]+j)
32+
return len(nums) - (1+max_len)

0 commit comments

Comments
 (0)