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

每日OJ题_算法_二分查找①_力扣704. 二分查找

目录

二分查找算法原理

力扣704. 二分查找

解析代码


二分查找算法原理

        二分查找一种效率较高的查找方法。但是,二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。一般步骤如下:

        首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

以前学C/C++也写过二分查找的代码,直接刷题:

力扣704. 二分查找

704. 二分查找 - 力扣(LeetCode)

难度 简单

给定一个 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

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。
class Solution {
public:int search(vector<int>& nums, int target) {}
};

解析代码

首先是有序的,就知道用二分了,简单题重拳出击:

class Solution {
public:int search(vector<int>& nums, int target) {int left = 0, right = nums.size() - 1;while(left <= right){int mid = left + (right - left) / 2;if(nums[mid] > target){right = mid - 1;}else if(nums[mid] < target){left = mid + 1;}else{return mid;}}return -1;}
};
http://www.lryc.cn/news/285674.html

相关文章:

  • 【Python】--- 基础语法(1)
  • 详解gorm中DB对象的clone属性
  • 数据库(MySQL库表操作)
  • 内网穿透的应用-如何使用Docker部署Redis数据库并结合内网穿透工具实现公网远程访问
  • 计算机网络复试
  • Android学习之路(23)组件化框架ARouter的使用
  • HCIA vlan练习
  • Ubuntu下安装Gazebo仿真器
  • Chatgpt+Comfyui绘图源码说明及本地部署文档
  • ts中 any 和 unknown 有什么区别,分别什么时候使用
  • C++中命名空间、缺省参数、函数重载
  • 【笔记】Helm-3 主题-12 Helm插件指南
  • 2023.1.17 关于 Redis 持久化 AOF 策略详解
  • P2PNet推理和训练
  • pyexecjs原生js加密算法逆向
  • 数据结构Java版(4)——链表
  • cfssl简单使用
  • 基于Word2vec词聚类的关键词实现
  • 开源项目_大模型应用_Chat2DB
  • 【线性代数与矩阵论】范数理论
  • 【C++】priority_queue模拟实现过程中值得注意的点
  • Git提交 ssh: connect to host github.com port 22: Connection timed out解决方案
  • Java调用WebService接口,SOAP协议HTTP请求返回XML对象
  • Django框架二
  • 工业相机与镜头参数及选型
  • VSCode使用Makefile Tools插件开发C/C++程序
  • 用C语言验证“三门定理”
  • 计算机网络-分层结构,协议,接口,服务
  • 前端开发 2: CSS
  • 嵌入式-Stm32-江科大基于标准库的GPIO4个小实验