1095 山脈陣列中查詢目標值 三分 二分

2021-09-29 21:05:05 字數 1477 閱讀 7666

(這是乙個 互動式問題 )

給你乙個 山脈陣列 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 是乙個山脈陣列的話,那它滿足如下條件 首...