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
相关推荐
Fcy64815 分钟前
⽤哈希表封装unordered_map和unordered_set(C++模拟实现)丨康有为丨17 分钟前
算法时间复杂度和空间复杂度HarmonLTS24 分钟前
Python人工智能深度开发:技术体系、核心实践与工程化落地a程序小傲36 分钟前
京东Java面试被问:RPC调用的熔断降级和自适应限流一分之二~36 分钟前
二叉树--层序遍历(迭代和递归)zl_vslam1 小时前
SLAM中的非线性优-3D图优化之绝对位姿SE3约束右扰动(十七)Cestb0n1 小时前
某果app 加密校验算法逆向分析机器学习之心1 小时前
MATLAB基于近红外光谱检测的菠萝含水率预测(多种预处理+PLS)程序员-King.2 小时前
day166—递归—多边形三角剖分的最低得分(LeetCode-1039)夏鹏今天学习了吗2 小时前
【LeetCode热题100(94/100)】下一个排列


