這是悅樂書的第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+篇,公衆号對話框回複【資料結構與算法】、【算法】、【資料結構】中的任一關鍵詞,擷取系列文章合集。
以上就是全部内容,如果大家有什麼好的解法思路、建議或者其他問題,可以下方留言交流,點贊、留言、轉發就是對我最大的回報和支援!