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
相关推荐
Kenneth風车13 分钟前
【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)111越甲八千18 分钟前
总结一下数据结构 树 的种类eternal__day21 分钟前
数据结构(哈希表(中)纯概念版)APP 肖提莫31 分钟前
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)OTWOL38 分钟前
两道数组有关的OJ练习题不惑_1 小时前
List 集合安全操作指南:避免 ConcurrentModificationException 与提升性能qq_433554541 小时前
C++ 面向对象编程:递增重载带多刺的玫瑰1 小时前
Leecode刷题C语言之切蛋糕的最小总开销①巫师不要去魔法部乱说2 小时前
PyCharm专项训练5 最短路径算法qystca2 小时前
洛谷 P11242 碧树 C语言