Leetcode演算法刷題筆記 8二分查詢

2021-10-14 09:39:32 字數 3445 閱讀 5629

leetcode 34. 在排序陣列中查詢元素的第乙個和最後乙個位置

尾語相關刷題筆記部落格

競賽常用模板整理(acm/icpc/ccsp)

leetcode演算法刷題筆記1-鍊錶

leetcode演算法刷題筆記2-棧、隊、堆

leetcode演算法刷題筆記3-遞迴與回溯

leetcode演算法刷題筆記4-貪心

leetcode演算法刷題筆記5-二叉樹

leetcode演算法刷題筆記6-圖

leetcode演算法刷題筆記7-動態規劃

leetcode演算法刷題筆記8-二分查詢

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例 1:

輸入: [1,3,5,6], 5 輸出: 2

示例 2:

輸入: [1,3,5,6], 2 輸出: 1

示例 3:

輸入: [1,3,5,6], 7 輸出: 4

示例 4:

輸入: [1,3,5,6], 0 輸出: 0

#include

using

namespace std;

//leetcode提交部分

class

solution

}return nums.

size()

;}};

//leetcode自行使用編譯器(如dev\vc\vs)測試部分

intmain()

;//自己輸入

vector<

int> nums;

for(

int i=

0;i<

4;i++

) solution solve;

cout

(nums,5)

}

#include

using

namespace std;

//leetcode提交部分

class

solution

else

if(target) right = mid-1;

//如是目標位置小於中點,就更新右邊界

}else

if(target>nums[mid]

) left = mid+1;

//如是目標位置大於中點,就更新左邊界 }}

return index;}}

;//leetcode自行使用編譯器(如dev\vc\vs)測試部分

intmain()

;//自己輸入

vector<

int> nums;

for(

int i=

0;i<

4;i++

) solution solve;

cout

(nums,5)

}

#include

using

namespace std;

//leetcode提交部分

class

solution

else

}return n;}}

;//leetcode自行使用編譯器(如dev\vc\vs)測試部分

intmain()

;//自己輸入

vector<

int> nums;

for(

int i=

0;i<

4;i++

) solution solve;

cout

(nums,5)

}

給定乙個按照公升序排列的整數陣列 nums,和乙個目標值 target。找出給定目標值在陣列中的開始位置和結束位置。

如果陣列中不存在目標值 target,返回 [-1, -1]。

高階:

你可以設計並實現時間複雜度為 o(log n) 的演算法解決此問題嗎?
示例 1:

輸入:nums = [5,7,7,8,8,10], target = 8 輸出:[3,4]

示例 2:

輸入:nums = [5,7,7,8,8,10], target = 6 輸出:[-1,-1]

示例 3:

輸入:nums = , target = 0 輸出:[-1,-1]

0 <= nums.length <= 105

-109 <= nums[i] <= 109

nums 是乙個非遞減陣列

-109 <= target <= 109

#include

using

namespace std;

//leetcode提交部分

class

solution}if

(res[0]

!=-1)

}}return res;}}

;//leetcode自行使用編譯器(如dev\vc\vs)測試部分

intmain()

;//自己輸入

vector<

int> nums;

for(

int i=

0;i<

6;i++)

solution solve;

cout<<

"["<<

(solve.

searchrange

(nums,8)

)[0]

<<

","<<

(solve.

searchrange

(nums,8)

)[1]

<<

"]"

}

不知為何比上面的耗時更久,按原理這個更快,可能太菜了

class

solution

return vector<

int>;;

}private

:int

binarysearch

(vector<

int>

& nums,

int target,

bool lower)

else

}return ans;}}

;

誠邀各校各地有志之士加入我們大學生it學習**流:871352155(請各位廣告大佬高抬貴手,常討論學習無關的朋友請出門右拐∑(っ°д°;)っ)

LeetCode刷題筆記(8)

因為這兩天比較忙,沒怎麼刷題,非常有罪惡感,今天開始繼續刷題。今天主攻的是二分查詢的四道題,感覺還是比較簡單的,的確非常高效率的乙個演算法。public class firstbadversion else return left private boolean isbadversion int m...

演算法 LeetCode刷題

given 1,3 2,6 8,10 15,18 return 1,6 8,10 15,18 關鍵就是a 1 b 0 也就是array i 1 1 array i 0 const merge array return array console.log merge 1,3 8,10 2,6 15,1...

Leetcode刷題筆記

1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...