当前位置:网站首页>Binary search template
Binary search template
2022-07-05 05:42:00 【A big pigeon】
author :labuladong
link :https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-xiang-jie-by-labuladong/
source : Power button (LeetCode)
Give a binary search template , Include : Binary search target value , Left boundary , Right border .
(Java and Python edition )
It's easy to find the target value directly ,
nums[mid]<target, Compress left left = mid +1
nums[mid]>target, Compress right right = mid -1
nums[mid]==target , return mid
Find the first two parts of the left boundary, similar to , but nums[mid]==target Continue to compress the right boundary , Lock left boundary , Finally, return to the left boundary . Pay attention to handling cross-border situations .
Finding the right boundary is the same as .
int binary_search(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while(left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
} else if(nums[mid] == target) {
// Go straight back to
return mid;
}
}
// Go straight back to
return -1;
}
int left_bound(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
} else if (nums[mid] == target) {
// Don't go back , Lock the left border
right = mid - 1;
}
}
// Finally, check left The situation of crossing the border
if (left >= nums.length || nums[left] != target)
return -1;
return left;
}
int right_bound(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] < target) {
left = mid + 1;
} else if (nums[mid] > target) {
right = mid - 1;
} else if (nums[mid] == target) {
// Don't go back , Lock the right border
left = mid + 1;
}
}
// Finally, check right The situation of crossing the border
if (right < 0 || nums[right] != target)
return -1;
return right;
}
class Solution:
def binary_search(self,nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
elif nums[mid] == target:
return mid
return -1
def left_bound(self,nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
elif nums[mid] == target:
right = mid -1
if left >= len(nums) or nums[left] != target:
return -1
return left
def right_bound(self,nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
elif nums[mid] ==target:
left = mid + 1
if right < 0 or nums[right] != target:
return -1
return right边栏推荐
- R language [import and export of dataset]
- Typical use cases for knapsacks, queues, and stacks
- Individual game 12
- Control unit
- 中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
- Solution to game 10 of the personal field
- API related to TCP connection
- Introduction to convolutional neural network
- Pointnet++ learning
- 动漫评分数据分析与可视化 与 IT行业招聘数据分析与可视化
猜你喜欢

Full Permutation Code (recursive writing)
![[cloud native] record of feign custom configuration of microservices](/img/39/05cf7673155954c90e75a8a2eecd96.jpg)
[cloud native] record of feign custom configuration of microservices
![R language [import and export of dataset]](/img/5e/a15ab692a6f049f846024c98820fbb.png)
R language [import and export of dataset]

CF1637E Best Pair
![[jailhouse article] performance measurements for hypervisors on embedded ARM processors](/img/c0/4843f887f77b80e3b2329e12d28987.png)
[jailhouse article] performance measurements for hypervisors on embedded ARM processors

剑指 Offer 53 - I. 在排序数组中查找数字 I

Some common problems in the assessment of network engineers: WLAN, BGP, switch

Codeforces round 712 (Div. 2) d. 3-coloring (construction)

Pointnet++ learning

SAP method of modifying system table data
随机推荐
Sword finger offer 09 Implementing queues with two stacks
Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
Web APIs DOM node
读者写者模型
Time complexity and space complexity
2017 USP Try-outs C. Coprimes
YOLOv5-Shufflenetv2
sync.Mutex源码解读
Daily question - Search two-dimensional matrix PS two-dimensional array search
A new micro ORM open source framework
Solution to the palindrome string (Luogu p5041 haoi2009)
Codeforces round 712 (Div. 2) d. 3-coloring (construction)
全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析
CCPC Weihai 2021m eight hundred and ten thousand nine hundred and seventy-five
2022 极术通讯-Arm 虚拟硬件加速物联网软件开发
二十六、文件系统API(设备在应用间的共享;目录和文件API)
Common optimization methods
Warning using room database: schema export directory is not provided to the annotation processor so we cannot export
第六章 数据流建模—课后习题