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

福田做商城网站建设找哪家公司好企业做网站的步骤与做网站注意事项

福田做商城网站建设找哪家公司好,企业做网站的步骤与做网站注意事项,网站开发服务 税,WordPress文章收录目录 1 问题描述 1.1 示例1 1.2 示例2 1.3 示例3 2 解题思路 2.1 二分查找法 3 代码实现 4 代码解析 4.1 初始化 4.2 二分法查找 4.3 返回结果 5 总结 1 问题描述 请实现无重复数字的升序数组的二分查找 给定一个 元素升序的、无重复数字的整型数组 nums 和一个目…

目录

1 问题描述

1.1 示例1

1.2 示例2

1.3 示例3

2 解题思路

2.1 二分查找法

3 代码实现

4 代码解析

4.1 初始化

4.2 二分法查找

4.3 返回结果

5 总结


1 问题描述

请实现无重复数字的升序数组的二分查找

给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1

数据范围:0≤len(nums)≤2×1050≤len(nums)≤2×105 , 数组中任意值满足 ∣val∣≤109∣val∣≤109

进阶:时间复杂度 O(log⁡n)O(logn) ,空间复杂度 O(1)O(1)

1.1 示例1

输入:

[-1,0,3,4,6,10,13,14],13

返回值:

6

说明:

13 出现在nums中并且下标为 6     

1.2 示例2

输入:

[],3

返回值:

-1

说明:

nums为空,返回-1     

1.3 示例3

输入:

[-1,0,3,4,6,10,13,14],2

返回值:

-1

说明:

2 不存在nums中因此返回 -1    

2 解题思路

首先,定义左右边界 leftright,并进行边界检查,若数组为空,则直接返回 -1。接着,进入 while 循环,采用二分查找法进行搜索。mid 计算方式为 left + (right - left + 1) / 2,确保 mid 更靠近右侧,以防止死循环。当 nums[mid] 小于等于 target 时,说明目标值可能在 mid 及其右侧,因此 left = mid;否则,缩小搜索范围,将 right 设为 mid - 1。循环结束后,检查 nums[left] 是否等于 target,若相等返回索引 left,否则返回 -1

2.1 二分查找法

当数组的长度为奇数时:

当数组的长度为偶数时:

3 代码实现

    int search(vector<int>& nums, int target) {// write code hereint left = 0;int right = nums.size()-1;if(right == -1) return -1;while(left < right){int mid = left + (right - left + 1)/2;if(nums[mid] <= target){left = mid;}else {right = mid - 1;}}if(nums[left] == target) return left;else return -1;}

4 代码解析

4.1 初始化

    int left = 0;int right = nums.size() - 1;if (right == -1) return -1;

初始化左右边界:left = 0right = nums.size() - 1,表示搜索范围是整个数组。

特殊情况处理:如果 right == -1,说明数组为空,直接返回 -1

4.2 二分法查找

        while(left < right){int mid = left + (right - left + 1)/2;if(nums[mid] <= target){left = mid;}else {right = mid - 1;}}

使用右偏二分查找,mid 取右侧值,确保 left 指向 target 可能存在的位置。若 nums[mid] <= target,更新 left = mid,否则缩小 right = mid - 1,逐步缩小搜索范围,最终确定 target 的位置。

4.3 返回结果

    if (nums[left] == target) return left;else return -1;

如果 nums[left] == target,说明找到了 target,返回索引 left。否则,说明 target 不存在,返回 -1

5 总结

代码使用右偏二分查找,mid 取右侧值,确保 left 指向 target 可能存在的位置。nums[mid] ≤ target 时,left = mid,否则 right = mid - 1,逐步缩小搜索范围。然而,while(left < right) 可能导致 left 无法有效更新,出现死循环。因此,更安全的做法是使用 left <= right 作为循环条件,并调整 mid 计算方式,以确保二分查找能够正确收敛,提高算法的稳定性和可靠性。

http://www.dtcms.com/wzjs/822370.html

相关文章:

  • 中国黄金集团建设有限公司官方网站西安的商城网站
  • 网站管理建设需进一步加强创新创业大赛项目计划书
  • 无极平台网站国外网站注册软件
  • 江门市网站建设公司网站设计开发公司
  • 外链的论坛网站做自己的网站的一般步骤
  • 做网站公司那家好国家企业信用信息查询平台
  • 泉州企业建站系统让顾客进店的100条方法
  • 小型网站开发成本腾讯云网站建设教程
  • 深圳做网站哪家wordpress5.2.2下载
  • 广饶网站制作不建网站网络营销怎么做
  • 资生堂网站建设外贸软件建设
  • 网站开发 理念怎么写泉州网站建设科技公司
  • 做目的旅游网站的网页制作图片大小设置
  • 购物网站功能设计招标建设网站
  • 网站公司技术交接网站开发和软件开发
  • 资阳地网站seo自己给网站做logo
  • 单页销售网站源码快三网站开发
  • seo网站免费优化软件wordpress搭建ppt
  • 南昌旅游集团网站建设给人做违法网站规避
  • 网站手机网站怎么建立网络推广哪个网站好
  • 什么网站做企业邮箱服务器东莞seo网站排名优化公司
  • 免费网站认证做网站多久
  • 南海区建设局网站网站维护得多久
  • 网站想做个链接怎么做的网站建设公司gzzhixun
  • 网站的字体微信公众号模板素材网站
  • 检察门户网站建设博物馆网站 微信 微博 建设
  • 泰兴做网站的公司建设营销型网站有哪些步骤
  • 什么网站有题目做网站不稳定有什么影响
  • 企业网站外包建设朝阳网站制作
  • 室内设计师网站十大网站兰州新区规划建设局网站