模版 整數二分

2021-10-09 15:27:34 字數 1214 閱讀 9677

確定乙個區間,使得目標值一定在這個區間內

從題目中找到一種性質:

根據上述的性質,具體可以把整數二分劃分為兩大類問題

第一類:目標值是前半段的右端點

將[ l,

r]

[l, r]

[l,r

]分成 [l,

mid−

1]

[l, mid-1]

[l,mid

−1]和[mi

d,r]

[mid, r]

[mid,r

]如果mid

midmi

d處的元素符合前半段性質,則目標值一定在[mi

d,r]

[mid, r]

[mid,r

]之間否則,目標值一定在[l,

mid−

1]

[l, mid-1]

[l,mid

−1]之間

**模版:

while

(l < r)

else

}

第二類:目標值是後半段的左端點

將[ l,

r]

[l, r]

[l,r

]分成 [l,

mid]

[l, mid]

[l,mid

]和[mid

+1,r

][mid+1, r]

[mid+1

,r]如果mid

midmi

d處的元素符合後半段性質,則目標值一定在[l,

mid]

[l,mid]

[l,mid

]之間否則,目標值一定在[mi

d+1,

r]

[mid+1,r]

[mid+1

,r]之間

**模版:

while

(l < r)

else

}

整數二分只有兩種分段情況:

l = mid 和 r = mid - 1,此時mid的更新值需要 +1

l = mid + 1 和 r = mid,此時mid的更新值不需要 +1

二分查詢 整數 模版

一段區間,定義一種性質使得區間被一分為二 二分查詢即為尋找滿足性質或不滿足性質的區間的邊界 區間被劃分為 l,mid 和 mid 1,r intbsearch 1 int l,int r 區間被劃分為 l,mid 1 和 mid,r intbsearch 2 int l,int r return l...

二分查詢模版

用於一般的二分查詢 public static intbinsearch2 int arr,int target if arr mid target else return 1 1 為啥是 lo mid 1,hi mid 1 而不是 lo mid,hi mid 呢?看迴圈條件 while lo hi...

二分模版題

給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下來q行,每...