10/18 檢查是否先嚴格遞增後再嚴格遞減
Given an array of integers arr, return true if and only if it is a valid mountain array.
Recall that arr is a mountain array if and only if:
arr.length >= 3- There exists some
iwith0 < i < arr.length - 1such that:arr[0] < arr[1] < ... < arr[i - 1] < arr[i]arr[i] > arr[i + 1] > ... > arr[arr.length - 1]

Example 1:
Input: arr = [2,1] Output: false
Example 2:
Input: arr = [3,5,5] Output: false
Example 3:
Input: arr = [0,3,2,1] Output: true
Constraints:
1 <= arr.length <= 1040 <= arr[i] <= 104
class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
#嚴格遞增後嚴格遞減
top = max(arr)
top_index = arr.index(top)
n= len(arr)
up,down=0,0
for i in range(1,top_index+1):
if arr[i] -arr[i-1] <= 0 :
return False
up = 1
for i in range(top_index, n-1):
down = 1
if arr[i+1] - arr[i] >= 0 :
return False
if up and down:
return True
else:
return False
class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
i_last = len(arr) - 1
left = 0
right = i_last
# move right
while left < i_last and (arr[left] < arr[left + 1]):
left += 1
if left == i_last:
return False
while right > 0 and (arr[right] < arr[right - 1]):
right -= 1
if right == 0:
return False
return left == right-------------------------class Solution:
def validMountainArray(self, arr: List[int]) -> bool:
start_hill_flag = False
up_flag = True
prev_num=arr[0]
if len(arr) <3 or arr[0] >= arr[1]:
return False
for i in range(1,len(arr)):
current_num = arr[i]
if current_num == prev_num:
return False
if up_flag:
if current_num < prev_num:
up_flag = False
else:
if current_num > prev_num:
return False
prev_num = current_num
if up_flag:
return False
return True
標籤: leetcode

0 個意見:
張貼留言
訂閱 張貼留言 [Atom]
<< 首頁