leetcode1095 山脈陣列中查詢目標值

2021-09-24 16:44:09 字數 821 閱讀 4033

三分找極值點:

解題思路:

1.先用三分查詢,找到極值點的位置pt

2.根據pt將陣列分成兩段,先對第一段[0,pt]二分查詢target,找到立即返回

3.如果第一段沒有找到target,則二分查詢第二段[pt,arr.length-1]

這樣滿足查詢不超過100次的要求嗎?

答:三分 複雜度據說是2log3(n) ,二分複雜度是2log2(n)。

那麼找極值點 最多需要查詢 2log3(n) = 2log3(10000) ≈ 2*9 = 18 次

二分最多需要呼叫 2*log2(10000) ≈ 2*14 = 28 次

18 + 28 < 100,所以這個方案是滿足要求的。

class solution else

}int ll = mountainarr.get(l);

int rr = mountainarr.get(r);

int pt = ll>rr?l:r; 

//pt是極值點

//二分左邊,找到返回

int rs = two_divide(0,pt,true);

if(rs!=-1) return rs;

//二分右邊

rs = two_divide(pt+1,len-1,false);

return rs;

}private int two_divide(int l, int r,boolean up) else

}return -1;

}elseelse if(target}return -1;}}

}

leetcode 山脈問題

給定乙個整數陣列 a,如果它是有效的山脈陣列就返回 true,否則返回 false。讓我們回顧一下,如果 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.lengt...

1095 山脈陣列中查詢目標值

這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...

1095 山脈陣列中查詢目標值

這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首先,a...