(這是乙個 互動式問題 )
給你乙個 山脈陣列 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
第一次見到這種題目,之前codeforces好像見到過一次互動題,也沒整明白。。
這個題其實就是乙個三分+二分的題目。
三分,我們找出「山頂」。二分,先對「左山坡」二分,如果沒有找到要找的值,就對「右山坡」進行二分,找不到就是-1.三分挺久沒寫了,有點生疏,調了好久。。
**如下:
/**
* // this is the mountainarray's api inte***ce.
* // you should not implement it, or speculate about its implementation
* class mountainarray ;
*/class
solution
else l=mid+1;
}//coutl=0;
while
(l<=r)
l=top,r=mountainarr.
length()
-1;while
(l<=r)
return-1
;}};
努力加油a啊,(o)/~ 1095 山脈陣列中查詢目標值
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...
1095 山脈陣列中查詢目標值
這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首先,a...
1095 山脈陣列中查詢目標值 二分搜尋
描述 這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首...