1095 山脈陣列中查詢目標值

2021-10-05 14:16:25 字數 1596 閱讀 7436

(這是乙個 互動式問題 )

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