leetcode34题。在排序数组中查找元素的第一个和最后一个位置
其中的mid=left+(right-left)/2;是一个比较常规的优化,可以防止左右边界加和出现int数据的溢出问题。
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int begin=0,end=nums.size()-1,mid;
if(nums.size()==0||target<nums[0]||target>*(nums.end()-1))
goto L1;
while (begin<=end)
mid = begin + (end - begin) / 2;
if(nums[mid]==target){
break;
}else if(nums[mid]>target){
end=mid-1;
}else{
begin=mid+1;
if(nums[mid]==target){
int left=0,right=mid,end=mid;
while(left<right){
mid=left+(right-left)/2;
if(nums[mid]==target){
right=mid;
}else if(nums[mid]<target){
left=mid+1;
begin=right;
left=end;
right=nums.size()-1;
while (left<right)
mid=left+(right-left)/2+1;
if(nums[mid]==target){
left=mid;
}else if(nums[mid]>target){
right=mid-1;
end=left;
return vector<int>({begin,end});
return vector<int>({-1,-1});
遇到有序数组,第一反应就是二分法。
二分法主要思路:
分别在数字头和尾建两个指针,重点比较两个指针中位值与目标值的大小,当中央值比目标值小,说明目标值在中值右边,则可以直接不考虑中值左侧的那些值。
在排序数组中查找数字个数:
普通二分法:
public int search(int[] nums, int target) {
int i = 0;
int j = nums.length - 1;
while (i <= j) {
利用二分法思想解题
对于有序数组,统计其中一个数字出现的次数,只要找到这个数字的左右边界即可。
而左右边界的查找可以采用二分法,以右边界为例。
给定数组 [5,7,7,8,8,10],targe
【leetcode】数组专场,二分查找一、标准的二分查找二、寻找左侧边界的二分查找三、寻找右侧边界的二分查找四、逻辑统一
一、标准的二分查找
直接上正题,什么是二分查找?
顾名思义:二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,标准的折半查找,要求必须采用顺序存储结构,而且表中元素按关键字有序排列
寻找一个数这个场景,可能也是大家比较熟悉的,即搜索一个数,如果存在,返回其索引,否则返回 -1。
int binarySearch(int[] nums, int targ
int binarySearch(int[] nums, int target) {
int left = 0;
int right = nums.length - 1; // 注意
while(left <= right) {
int mid = left + (r
LeeCode34:
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值,返回 [-1, -1]。
题目解析:
查找排序数组的题目,复杂度要求O(log n)级别,显而易见要用二分法。
二分法的解题套路:
int binarySearch(vector<int> &nums, int target) {
int left = 0, right
给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是O(logn) 级别。
如果数组中不存在目标值,返回[-1, -1]。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4]
输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]
classSolution{
publi...
目录题目描述题目大意解题方法遍历二分查找日期
题目地址:https://leetcode-cn.com/problems/search-in-a-sorted-array-of-unknown-size/
Given an integer array sor...