leecode 二分查詢大全

2021-10-23 18:52:53 字數 1268 閱讀 4051

二分查詢大全

class

solution

:def

searchrange

(self, nums: list[

int]

, target:

int)

-> list[

int]:if

not nums:

return[-

1,-1

] l=

len(nums)

defzuo

(nums,target)

: left,right=

0,l-

1while left<=right:

mid=left+

(right-left)//2

if nums[mid]

==target:

right=mid-

1elif nums[mid]

left=mid+

1elif nums[mid]

>target:

right=mid-

1if left>=l or nums[left]

!=target:

return-1

return left

defyou(nums,target)

: left,right=

0,l-

1while left<=right:

mid=left+

(right-left)//2

if nums[mid]

==target:

left=mid+

1elif nums[mid]

left=mid+

1elif nums[mid]

>target:

right=mid-

1if right<

0or nums[right]

!=target:

return-1

return right

left=zuo(nums,target)

right=you(nums,target)

return

[left,right]

左右邊界函式,找到乙個有序陣列中的乙個數的左邊界和右邊界,也就是說這個數的最左邊位置和最右邊位置,如果只有乙個,則左右邊界相等,多個則右-左=重複個數。也可以說是左邊小於這個數(最左邊的數)的個數和右邊小於這個數的個數(最右邊的數)

Leecode 378 (二分查詢)

leecode 378 有序矩陣中第k小元素 題目描述 給定n n矩陣,其中每行和每列元素均按公升序排序,找到矩陣中第k小元素,請注意 是排序後的第k小元素 示例示例 matrix 1,5,9 10,11,13 12,13,15 k 8,返回 13。解題思路 暴力解題法 將矩陣中所有的數讀入一維陣列...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

LeeCode 1439 暴力 二分

題意 傳送門 1439.有序矩陣中的第 k 個最小陣列和 題解暴力 列舉所有陣列 o n m o n m o nm 考慮到 k kk 值較小,每一次列舉當前行,將子陣列和大小壓縮為 min k,t mp.s ize min k,tmp.size min k,tmp.size 只保留最小的 k kk ...