当前位置:网站首页>力扣704-二分查找
力扣704-二分查找
2022-08-02 11:41:00 【张怼怼√】
题目描述
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
解题思路
这是一道简单题,由于题目给定的是一个有序的数组,那么查找元素就可以采用二分查找的方法;
升序和降序只是在判断边界条件的时候有部分差异;
需要求出中间元素,可以直接写 int mid = (left + right) / 2;
但是这样写,当数组规模较大的时候容易造成整形数据溢出;
所以考虑采用位运算 int mid = left + ((right - left) >> 1);
采用的区间使用左右闭合区间 [left, right],个人认为这样更好理解。
输入输出示例
代码
class Solution {
public int search(int[] nums, int target) {
int n = nums.length;
if(target < nums[0] || target > nums[n - 1]) return -1;
int left = 0, right = n - 1;
while(left <= right){
//int mid = left + ((right - left) >> 1); // 这样写是为了防止超出整型数据溢出
int mid = (left + right) / 2;
if(target > nums[mid]){
left = mid + 1;
}else if(target < nums[mid]){
right = mid - 1;
}else return mid;
}
return -1;
}
}
边栏推荐
猜你喜欢
npm WARN config global `--global`, `--local` are deprecated. Use `--location解决方案
C#为listview选中的项添加右键菜单
免费文档翻译-免费批量文档翻译软件推荐
大疆P4M云遮挡矫正
QAbstractScrollArea、QScrollArea
云原生(三十) | Kubernetes篇之应用商店-Helm介绍
- [email protected] This version of tar is no longer supported, and will not receive"/>
npm WARN deprecated [email protected] This version of tar is no longer supported, and will not receive
Create a devops CI/CD process using the kubesphere GUI
观察者(observer)模式(二) —— 实现线程安全的监听器
X86函数调用模型分析
随机推荐
面积曲线AUC(area under curve)
yolo格式(txt)数据集转VOC(xml)
Crack detection technology based on deep learning
今日睡眠质量记录85分
企业级数据治理工作怎么开展?Datahub这样做
npm install报错npm ERR Could not resolve dependency npm ERR peer
10份重磅报告 — 展望中国数字经济未来
QT笔记——Q_PROPERTY了解
Shell编程之条件语句
使用mosquitto过程中的问题解决
Getting Started with Three.JS Programmatic Modeling
MP的几种查询方式
观察者(observer)模式(二) —— 实现线程安全的监听器
翁恺C语言程序设计网课笔记合集
QT笔记——QT类反射机制简单学习
X86函数调用模型分析
【kali-信息收集】(1.9)Metasploit+搜索引擎工具Shodan
npm run dev 和 npm run serve区别
运行yum报错Error: Cannot retrieve metalink for reposit
【2022 小目标检测综述】Towards Large-Scale Small Object Detection: Survey and Benchmarks