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
相关推荐
萌新彭彭5 分钟前
vLLM主要模块Scheduler详解灵动小溪8 分钟前
时频信号分析总结CoovallyAIHub9 分钟前
让Qwen-VL的检测能力像YOLO一样强,VLM-FO1如何打通大模型的视觉任督二脉2401_8414956420 分钟前
【自然语言处理】基于统计基的句子边界检测算法liu****35 分钟前
16.udp_socket(三)CoovallyAIHub1 小时前
突破跨模态识别瓶颈!火箭军工程大学提出MFENet:让AI在白天黑夜都能准确识人CoovallyAIHub1 小时前
TypeScript超越Python,以66%增速跃升第一,Python稳居AI领域王座User_芊芊君子1 小时前
【LeetCode经典题解】递归破解对称二叉树之谜Rock_yzh1 小时前
LeetCode算法刷题——49. 字母异位词分组小欣加油1 小时前
leetcode 2654 使数组所有元素变成1的最少操作次数


