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

力扣704:二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1


示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

思想:定义一个low指向数组的第一个元素,定义一个high指向数组的最后的一个元素,定义一个mid指向数组的中间那个元素。将中间元素与目标元素进行比较,如果相等,则返回其下标mid。如果中间元素小于目标元素,则目标元素在数组右边,将low移动到low+1位置。如果目标元素小于之间元素,则目标元素在数组左边,将high移动到high+1位置。然后对相应的左表或者右表重复上述操作,查找成功返回mid,差找失败,返回-1。

代码:

int search(int* nums, int numsSize, int target) {int low=0;int high=numsSize-1,mid;while(low<=high){mid=(low+high)/2;if(nums[mid]==target){return mid;}else if(nums[mid]<target){low=mid+1;}else{high=mid-1;}}return -1;
}

时间复杂度O(longn),空间复杂度O(1)


http://www.mrgr.cn/news/19771.html

相关文章:

  • 软件开发过程模型(软件设计师)
  • 如何将ONLYOFFICE和Zapier进行集成?
  • 运维学习————kafka(1)
  • 图标下载网站推荐:从图标下载到全球顶级平台
  • EVPN学习
  • 24数学建模国赛提供助攻(14——偏最小二乘回归)
  • 枚举+数学,CF 449A - Jzzhu and Chocolate
  • 常见的管理系统简称
  • Python实现Paillier同态加密算法
  • 数字签名./散列函数
  • 春节需备美酒:白酒与年味的整合
  • 解题--有关动态内存开辟 几道经典的笔试题
  • Xmind2024去除VIP会员解锁版
  • VS编译环境中printf() scanf()等文件操作函数不安全编译报错的解决方法
  • 数据结构排序之快排
  • 什么是网络安全?
  • 宠物空气净化器是智商税吗?希喂、IAM、范罗士哪款除毛效果更好?
  • 双向链表基本知识
  • C++11第一弹:简介 | 统一的列表初始化 | 声明
  • 2024/9/4 Canlink配置介绍与常见故障排查