2023年10月19日 星期四

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 i with 0 < i < arr.length - 1 such 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 <= 104
  • 0 <= 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
            
       

標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁