-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvalidMountainArray.py
More file actions
64 lines (48 loc) · 1.28 KB
/
validMountainArray.py
File metadata and controls
64 lines (48 loc) · 1.28 KB
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
'''
Source : https://leetcode.com/problems/valid-mountain-array/
Author : Yuan Wang
Date : 2019-01-07
/**********************************************************************************
*Given an array A of integers, return true if and only if it is a valid mountain array.
*
*Recall that A is a mountain array if and only if:
*
*A.length >= 3
*There exists some i with 0 < i < A.length - 1 such that:
*A[0] < A[1] < ... A[i-1] < A[i]
*A[i] > A[i+1] > ... > A[B.length - 1]
Example 1:
Input: [2,1]
Output: false
Example 2:
Input: [3,5,5]
Output: false
**********************************************************************************/
'''
def validMountainArray(A):
"""
:type A: List[int]
:rtype: bool
"""
N = len(A)
i = 0
# walk up
while i+1 < N and A[i] < A[i+1]:
i += 1
# peak can't be first or last
if i == 0 or i == N-1:
return False
# walk down
while i+1 < N and A[i] > A[i+1]:
i += 1
return i == N-1
import unittest
class Test(unittest.TestCase):
def setUp(self):
self.A = [2,1]
self.B = [0,3,2,1]
def test(self):
self.assertEqual(validMountainArray(self.A), False)
self.assertEqual(validMountainArray(self.B), True)
if __name__ == '__main__':
unittest.main()