当前位置: 首页 > wzjs >正文

建设银行网站怎么登陆网站悬浮窗广告

建设银行网站怎么登陆,网站悬浮窗广告,网站建设阶段,怎样做网页推广一、问题剖析 题目要求 给定一个非递减数组 nums 和一个目标值 target,需要找到: 目标值在数组中的起始位置 目标值在数组中的结束位置 如果目标值不存在,返回 [-1, -1] 关键约束 时间复杂度必须为 O (log n):排除线性扫描的…

一、问题剖析

题目要求

给定一个非递减数组 nums 和一个目标值 target,需要找到:

  • 目标值在数组中的起始位置

  • 目标值在数组中的结束位置
    如果目标值不存在,返回 [-1, -1]

关键约束

  • 时间复杂度必须为 O (log n):排除线性扫描的可能

  • 数组可能包含重复元素:需要处理多个相同元素的情况

  • 数组可能为空或全为负数:需考虑边界条件

二、核心思路:两次二分查找

1. 常规二分查找的局限性

普通二分查找只能找到一个匹配的位置,但无法确定是否为第一个或最后一个出现的位置。例如,数组 [5,7,7,8,8,10] 中查找 8,常规二分可能返回索引 3 或 4。

2. 左右边界二分法

通过两次独立的二分查找分别确定:

  • 左边界:第一个等于 target 的位置

  • 右边界:最后一个等于 target 的位置

左边界查找逻辑
初始化 left=0, right=n-1
当 left <= right 时:mid = (left + right) / 2if nums[mid] >= target:right = mid - 1else:left = mid + 1
最终检查 nums[left] 是否等于 target
右边界查找逻辑
初始化 left=0, right=n-1
当 left <= right 时:mid = (left + right) / 2if nums[mid] <= target:left = mid + 1else:right = mid - 1
最终检查 nums[right] 是否等于 target

三、Java 代码实现

​
class Solution {public int[] searchRange(int[] nums, int target) {int left = findLeftBound(nums, target);int right = findRightBound(nums, target);if (left <= right && nums[left] == target) {return new int[]{left, right};}return new int[]{-1, -1};}private int findLeftBound(int[] nums, int target) {int left = 0, right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] >= target) {right = mid - 1;} else {left = mid + 1;}}return left;}private int findRightBound(int[] nums, int target) {int left = 0, right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] <= target) {left = mid + 1;} else {right = mid - 1;}}return right;}
}​

四、代码详细解析

1. 主方法 searchRange

  • 调用两次二分查找:分别获取左边界和右边界

  • 有效性验证:检查左边界是否在有效范围内且对应值等于目标值

2. 左边界查找 findLeftBound

  • 调整条件:当 nums[mid] >= target 时,说明左边界可能在左侧

  • 循环结束后left 指向第一个大于等于 target 的位置

3. 右边界查找 findRightBound

  • 调整条件:当 nums[mid] <= target 时,说明右边界可能在右侧

  • 循环结束后right 指向最后一个小于等于 target 的位置

五、复杂度分析

时间复杂度

  • 两次二分查找:每次时间复杂度为 O (log n)

  • 总时间复杂度:O(log n)

空间复杂度

  • 常数额外空间:O(1)

六、测试用例验证

测试用例 1

输入nums = [5,7,7,8,8,10], target = 8

  • 左边界查找:最终 left=3

  • 右边界查找:最终 right=4

  • 输出[3,4]

测试用例 2

输入nums = [5,7,7,8,8,10], target = 6

  • 左边界查找:最终 left=0(nums[0]=5 <6)

  • 右边界查找:最终 right=-1

  • 输出[-1,-1]

测试用例 3

输入nums = [], target = 0

  • 左边界查找:返回 0

  • 右边界查找:返回 -1

  • 验证0 > -1,返回 [-1,-1]

七、常见问题与优化

问题 1:为什么需要两次二分查找?

  • 左边界:在找到第一个匹配点后,需要继续向左查找

  • 右边界:在找到最后一个匹配点后,需要继续向右查找

问题 2:如何处理数组为空?

  • 直接返回 [-1,-1]

优化点:合并两次查找

可以将两次查找合并为一次,但会降低代码可读性。建议保持两次独立查找,逻辑更清晰。

感谢各位的阅读,后续将持续给大家讲解力扣中的算法题和数据库题,如果觉得这篇内容对你有帮助,别忘了点赞和关注,后续还有更多精彩的算法解析与你分享!


文章转载自:

http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://00000000.yqmmh.cn
http://www.dtcms.com/wzjs/617415.html

相关文章:

  • zencart 网站从哪个网站设置宽带主机
  • 前端开发培训多少钱百度seo关键词排名技术
  • wap网站制作方案怎么做网页链接跳转
  • 重庆专业网站设计服务一个月捞偏门可挣20万
  • 企业网站开发项目策划书绵阳欣城建设
  • 手机网站建设可行性分析福州在线
  • 做公司网站需要服务器吗财务公司网站建设
  • 有经验的武进网站建设中山建设公司网站
  • 戴尔网站建设成功的关键网站建设后预期推广方式
  • vps上的网站运行太慢深圳建网站一般多少钱
  • 岷县城乡建设局网站网络营销推广seo
  • 邢台信息发布平台seo模拟点击工具
  • 中学生怎么做网站ppt排版布局
  • 企业集团网站建设方案论文无锡免费做网站
  • 网络公司网站模板微网站可以做商城吗
  • 导航网站头部代码南京计算机培训机构哪个最好
  • 深圳开发的购物网站蓝色大气网站模板
  • 外贸型网站建设方法广州网站开发怎么做
  • wordpress 字段键网站优化和网站推广
  • 珠海建设局网站首页平面设计培训班哪里有
  • 网站二维码代码wordpress网址
  • 郑州门户网站建设哪家好wordpress网易音乐播放器
  • 高毅资产网站谁做的商城网站建设的优点
  • 新网站做seo太原建站一条龙
  • 建立企业网站选什么好建设部网站注册中心
  • 济南seo整站优化招商电话开发一个网站成本
  • 相册模版网站图片展示国产4k高清电视十大排名
  • 网站模板后台百度seo刷排名网址
  • 怎么把文件发送到网站做网站交互
  • 响应式网站模板 食品wordpress获取文章内容页的分类