アルゴリズム

leetcode easy valid mountain array

投稿日:

おはようございます

今日の学びは

・whileの中の処理はできるだけ削れれば上位に食い込めるぞ

・状態管理問題も出ますよ。電話面接とかにぴったりな難易度つまり簡単なので使われそう。

です。

 

上げ下げの状態をうまく管理できるか?という問題です。

愚直に実装しておっけなー問題でした。ループのrange(len(A)-1)などはoff by 1 エラーに気をつけながら頑張りましょう。

class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        status = -1
        if len(A) <= 2: return False
        for i in range(len(A)-1):
            diff = A[i+1] - A[i]
            if diff > 0 and status == -1:
                status = 0
            if diff > 0 and status == 0:
                pass
            elif diff < 0 and status == 0:
                status = 1
                # i is peak
            elif diff < 0 and status == 1:
                # going down
                pass
            else:
                return False
        return status == 1

条件を統合してif文を二つ減らしたところ。。。

class Solution:
    def validMountainArray(self, A: List[int]) -> bool:
        status = -1
        if len(A) <= 2: return False
        for i in range(len(A)-1):
            diff = A[i+1] - A[i]
            if diff > 0 and status <= 0:
                status = 0
            elif diff < 0 and status >= 0:
                status = 1
            else:
                return False
        return status == 1

 

 

8m 減らしただけで順位が急激に上がった

細部にこだわると以外に得点伸びる

 

以上です

 

-アルゴリズム

Copyright© CTOを目指す日記 , 2024 All Rights Reserved.