天天看點

LeetCode.941-有效山形數組(Valid Mountain Array)

這是悅樂書的第360次更新,第387篇原創

01 看題和準備

今天介紹的是

LeetCode

算法題中

Easy

級别的第

222

題(順位題号是

941

)。給定一個整數數組

A

,當且僅當它是一個有效的山形數組時傳回

true

  • A是一個山形數組,當且僅當:
  • A.length> = 3

存在一些具有0 < i < A.length-1的i,使得:

A[0] < A[1] < ... < A[i-1] < A[i]
A[i] > A[i+1] > ... > A[A.length-1]
           

例如:

輸入:[2,1]

輸出:false

輸入:[3,5,5]

輸入:[0,3,2,1]

輸出:true

注意:

  • 0 <= A.length <= 10000
  • 0 <= A [i] <= 10000

02 解題

根據題目的規則,要滿足山形數組的條件,不僅數組元素個數要大于等于三個,并且要存在一個值,使得在這個值之前的元素是遞增形勢,在這個值之後的元素是遞減形勢。

從數組第一個元素開始周遊,做遞增判斷,直到不滿足條件為止,經曆遞增的判斷後,需要判斷索引是否位于中間,即不能是0或者是最後一個,再繼續遞減的判斷,判斷結束後,判斷索引是否等于最後一位即可。

public boolean validMountainArray(int[] A) {
    if (A == null || A.length < 3) {
        return false;
    }
    int index = 0, n = A.length-1;
    while (index < n && A[index] < A[index+1]) {
        index++;
    }
    // 如果A是單調遞增或者單調遞減,直接傳回false
    if (index == 0 || index == n) {
        return false;
    }
    while (index < n && A[index] > A[index+1]) {
        index++;
    }
    return index == n;
}
           

03 小結

算法專題目前已連續日更超過七個月,算法題文章228+篇,公衆号對話框回複【資料結構與算法】、【算法】、【資料結構】中的任一關鍵詞,擷取系列文章合集。

以上就是全部内容,如果大家有什麼好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支援!