(這是乙個 互動式問題 )
給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get(index) 等於 target 最小 的下標 index 值。
如果不存在這樣的下標 index,就請返回 -1。
何為山脈陣列?如果陣列 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]
你將 不能直接訪問該山脈陣列,必須通過 mountainarray 介面來獲取資料:
mountainarray.get(k) - 會返回陣列中索引為k 的元素(下標從 0 開始)
mountainarray.length() - 會返回該陣列的長度
注意:對 mountainarray.get 發起超過 100 次呼叫的提交將被視為錯誤答案。此外,任何試圖規避判題系統的解決方案都將會導致比賽資格被取消。
示例 1:
輸入:array = [1,2,3,4,5,3,1], target = 3
輸出:2
解釋:3 在陣列**現了兩次,下標分別為 2 和 5,我們返回最小的下標 2。
示例 2:
輸入:array = [0,1,2,4,2,1], target = 3
輸出:-1
解釋:3 在陣列中沒有出現,返回 -1。
3 <= mountain_arr.length() <= 10000
0 <= target <= 10^9
0 <= mountain_arr.get(index) <= 10^9
/**
* // this is the mountainarray's api inte***ce.
* // you should not implement it, or speculate about its implementation
* class mountainarray ;
*/class
solution
//二分查詢,先找峰值index
int i=
0,j=mountainarr.
length()
-1;while
(ielse
if(mountainarr.
get(mid)
get(mid+1)
)}int peak = i;
//cout0,k2=peak,k3 = mountainarr.
length()
-1;int index=-1
;while
(k1<=peak)
else
if(cur>target)
else
if(cur(index!=-1
)else
else
if(cur1else
if(cur1>target)}}
return index;}}
;
1095 山脈陣列中查詢目標值
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...
1095 山脈陣列中查詢目標值 二分搜尋
描述 這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首...
1095 山脈陣列中查詢目標值 三分 二分
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...