給定乙個整數陣列 a,如果它是有效的山脈陣列就返回 true,否則返回 false。
讓我們回顧一下,如果 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]
先分析這道題,山脈陣列的特點是從左到最高點是公升序序列,從右到最高點是公升序序列,最高點是唯一的,且最高點兩邊必須都有數字;這個時候自然而然就會想到利用雙指標來解決問題,雙指標適用什麼情況呢:大多數是你想要的解決的問題是需要從乙個陣列的頭尾往中間分析,到達某個特殊點相遇或者是到達某個特殊點會停下,然後我們需要根據這兩個指標所指的位置是不是滿足我們條件來返回乙個我們想要的結果。對於這個題就是左指標停留在左邊公升序序列的最高點,右指標必須停留在從右頭開始的公升序序列的最高點(也是這個序列的最後乙個位置,這個條件就是我們找到最高點的跳出條件),而只有這兩個指標最後停留的位置要一致才算是正確的結果;
考慮一下特殊情況,前文說了山脈陣列必須保證左右兩邊都有數字,如果整個陣列是公升序或者降序,兩個指標最後停留的位置是一樣的,但是不滿足山脈陣列成立條件;
分析到這裡就可以開始寫**了:
bool
validmountainarray
(vector<
int>
& a)
雙指標思想
雙指標思想 雙指標並不是真正意義上的指標 它是指 通過用兩個變數的動態儲存兩個或多個結點,來達到簡化某些流程的目的 第一種型別的雙指標 兩個序列,兩個指標 第二種型別的雙指標 乙個序列,兩個指標 維護區間 例題1 陣列元素的目標和 兩個序列,兩個指標 保證有唯一的解 include using na...
leetcode解題之山脈陣列中查詢目標值
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首先,a...
有效的山脈陣列
leetcode的一道演算法題 給定乙個整數陣列 a,如果它是有效的山脈陣列就返回 true,否則返回 false。讓我們回顧一下,如果 a 滿足下述條件,那麼它是乙個山脈陣列 a.length 3 在 0 i a.length 1 條件下,存在 i 使得 a 0 a 1 a i 1 a i a i...