Leetcode852 山脈陣列的封頂索引
阿新 • • 發佈:2018-12-08
【題目描述】
我們把符合下列屬性的陣列 A
稱作山脈:
A.length >= 3
- 存在
0 < i < A.length - 1
使得A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]
給定一個確定為山脈的陣列,返回任何滿足
A[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]
的i
的值。
示例 1:
輸入:[0,1,0] 輸出:1
示例 2:
輸入:[0,2,1,0] 輸出:1
提示:
3 <= A.length <= 10000
- 0 <= A[i] <= 10^6
- A 是如上定義的山脈
【解題思路】
這道題之所以簡單是因為預設陣列是山脈,不用判斷。所以直接用二分查詢的辦法去做,總共有三種可能的情況,所以根據mid的值去和前後做比較,來判斷下一步去哪個區間找封頂。
class Solution { public: int peakIndexInMountainArray(vector<int>& A) { int low=0; int high=A.size()-1; int mid=0; while(low<=high){ mid = low + ((high-low)>>2); if(A[mid]<A[mid+1]) low=mid+1; else if(A[mid]<A[mid-1]) high=mid-1; else return mid; } } };