当前位置:网站首页>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
边栏推荐
- 2020ccpc Qinhuangdao J - Kingdom's power
- Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
- 剑指 Offer 05. 替换空格
- In this indifferent world, light crying
- Some common problems in the assessment of network engineers: WLAN, BGP, switch
- 用STM32点个灯
- 游戏商城毕业设计
- Kubedm series-00-overview
- 动漫评分数据分析与可视化 与 IT行业招聘数据分析与可视化
- Solution to game 10 of the personal field
猜你喜欢
6. Logistic model
Implement a fixed capacity stack
Light a light with stm32
Some common problems in the assessment of network engineers: WLAN, BGP, switch
Little known skills of Task Manager
剑指 Offer 53 - I. 在排序数组中查找数字 I
用STM32点个灯
从Dijkstra的图灵奖演讲论科技创业者特点
[cloud native] record of feign custom configuration of microservices
【Jailhouse 文章】Look Mum, no VM Exits
随机推荐
Reflection summary of Haut OJ freshmen on Wednesday
A new micro ORM open source framework
用STM32点个灯
剑指 Offer 53 - I. 在排序数组中查找数字 I
High precision subtraction
Acwing 4301. Truncated sequence
Haut OJ 2021 freshmen week II reflection summary
【Jailhouse 文章】Performance measurements for hypervisors on embedded ARM processors
Educational Codeforces Round 116 (Rated for Div. 2) E. Arena
shared_ Repeated release heap object of PTR hidden danger
网络工程师考核的一些常见的问题:WLAN、BGP、交换机
数仓项目的集群脚本
lxml. etree. XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
Cluster script of data warehouse project
Palindrome (csp-s-2021-palin) solution
F - Two Exam(AtCoder Beginner Contest 238)
7. Processing the input of multidimensional features
kubeadm系列-02-kubelet的配置和启动
Smart construction site "hydropower energy consumption online monitoring system"
【云原生】微服务之Feign自定义配置的记录