1.题目:
2.解析:这里不能用传统二分,因为涉及范围,传统二分时间复杂度会降为O(N),要做些改动。
步骤一:查找区间左端点
细节图:
步骤二:查找区间右端点:
细节图:
代码:
javapublic int[] searchRange(int[] nums, int target) { int[] ret = new int[2]; ret[0] = ret[1] = -1; if(nums.length == 0) return ret; //二分查找区间左端点 int left = 0; int right = nums.length-1; while(left < right){ int mid = left+(right-left)/2; if(nums[mid] < target) left = mid+1; else right = mid; } //判断是否有结果 if(nums[left] == target){ ret[0] = left; }else { return ret; } //二分查找区间右端点 left = 0; right = nums.length-1; while(left < right){ int mid = left+(right-left+1)/2; if(nums[mid] <= target) left = mid; else right = mid-1; } //判断是否有结果 ret[1] = left; return ret; }3.非朴素二分模板:在理解原理基础上
二分查找一>:在排序数组中查找元素的第一个和最后一个位置
robin_suli2024-10-03 22:12
相关推荐
钮钴禄·爱因斯晨8 分钟前
聚焦操作系统中的PV操作云泽80814 分钟前
笔试算法 - 双指针篇(一):移动零、复写零、快乐数与盛水容器研☆香16 分钟前
聊一聊如何分析js中的数据结构不才小强35 分钟前
目标跟踪算法DeepSort实战papership44 分钟前
【入门级-数学与其他:1.数及其运算:进制与进制转换:二进制、八进制、十进制、十六进制】ComputerInBook1 小时前
数字图像处理(4版)——第 4 章——频域滤波(下)(Rafael C.Gonzalez&Richard E. Woods)会编程的土豆1 小时前
【复习】二分查找Yzzz-F1 小时前
Problem - D - Codeforceschas_882 小时前
macbook air M5 32G本地跑ddtree-mlx效果programhelp_2 小时前
WeRide OA 2026 高频真题分享 & 详细备战指南


