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

提示:

提示:- 你可以假设 nums 中的所有元素是不重复的。- n 将在 [1, 10000]之间。- nums 的每个元素都将在 [-9999, 9999]之间。

解题思路:典型的二分查找,就是一前一后两个指针,更新法则为判断target和middle值之间的关系,从而更新begin和end。
源代码:

#include <iostream>
#include<vector>using namespace std;int search(vector<int>& nums, int target)
{int left = 0;int right = nums.size() - 1;int middle = 0;while (left <= right){if (nums[left] == target){return left;}if (nums[right] == target){return right;}middle = left + right / 2;if (nums[middle] == target){return middle;}if (nums[middle] > target){right = middle;left++;}if (nums[middle] < target){left = middle;right--;}}return -1;
}int main()
{vector<int> nums = { -1, 0, 3, 5, 9, 12 };int target = 9;int result = search(nums,target);cout << result << endl;system("pause");return 0;
}

LeetCode之二分查找相关推荐

  1. [算法]LeetCode 专题 -- 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置

    LeetCode 专题 – 二分查找专题 34. 在排序数组中查找元素的第一个和最后一个位置 难度:中等 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值 ...

  2. [LeetCode]704.二分查找及相关题目

    数组理论基础 数组理论 数组是存放在连续内存空间上的相同类型数据的集合 数组可以方便的通过下标索引的方式获取到下标下对应的数据 二维数组在内存的空间地址是连续的 二分查找 LeetCode 704.二 ...

  3. LeetCode Hot100 ---- 二分查找专题

    什么是二分查找 二分查找是计算机科学中最基本.最有用的算法之一. 它描述了在有序集合中搜索特定值的过程. 二分查找中使用的术语: 目标 Target -- 你要查找的值 索引 Index -- 你要查 ...

  4. LeetCode的二分查找的练习部分总结

    这两天由于工作的原因,一直没有写博客,但是却把LeetCode上面的题目做了不少--二分查找.上面这些题都是这两天写的.现在简单做一个总结. 首先二分查找的思想就是对一个有规律的元素(事情)进行不断的 ...

  5. Leetcode 704.二分查找

    传送门:力扣二分查找 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<vector> #includ ...

  6. Leetcode题解 二分查找

    原理 1. 正常实现 public int binarySearch(int[] nums, int key) {int l = 0, h = nums.length - 1;while (l < ...

  7. Leetcode 704.二分查找 27.移除元素 代码随想录day1

    本系列目的在于跟练代码随想录,以及记录自己在数据结构与算法方面的一些学习 704.二分查找 其实之前自己在随便刷题的时候看过这道题目,就是一个纯新手的大状态,第一次听到二分查找这样的东西,然后跟着题解 ...

  8. [刷题]leetcode\704_二分查找

    二分查找前提:有序数组,无重复元素(若重复返回不唯一) class Solution:def search(self, nums: List[int], target: int) -> int: ...

  9. leetCode C++ 二分查找 35. 搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

    一.C++ int binarySearch(vector<int>& nums, int &target, int left, int right) {int mid = ...

  10. LeetCode面试刷题技巧-二分查找算法(下):通过 LeetCode 学习二分查找算法-销售价值减少的颜色球

    前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...

最新文章

  1. 领歌leangoo敏捷工具个人工作台功能
  2. WINDOWS SERVER 2003 AD中的5种操作主机
  3. EF Code First 学习笔记:关系
  4. Spring框架中的单例Bean是线程安全的吗
  5. nodejs express use 传值_再也不怕面试官问你express和koa的区别了
  6. windows curl ssl版本号编译
  7. java 解密pdf文件_Java 加密和解密PDF文档
  8. 海康、大华摄像头chrome高版本实时播放(java集成)
  9. 虚拟基础架构管理——直接通过 VMware vCenter 管理 NetApp 存储操作
  10. Word 里文字对齐推荐这4种方法
  11. 程序人生丨25岁毕业,月薪1万
  12. mysql统计一年中每周的数据,week(时间)和week(时间,1)不同
  13. 账号管理html,个人账号管理.html
  14. 平面、3D设计软件最全集子(Windows系32、64位)
  15. 明星热图|高圆圆、颖儿、杨蓉等演绎服饰新品;张雨绮、刘嘉玲代言新品牌;李佳琦入选《时代》全球下一代百位影响力人物榜...
  16. 《摩诃般若波罗蜜多心经》 玄奘 译
  17. 语音平台三方会战,亚马逊谷歌苹果谁领风骚?
  18. android 语音识别_Android语音识别教程
  19. 通讯录管理系统—优化版 (C语言 期末大作业 课程设计)
  20. linux怎么安装.pl文件,浅谈如何解决perl Makefile.PL、make install 安装报错问题

热门文章

  1. RunTime之类与对象
  2. # 学号20155308 2006-2007-2 《Java程序设计》第4周学习总结
  3. Decorator 装饰(结构型)
  4. 关于System.identityHashCode(obj) 与 obj.hashcode()
  5. 使用getopt_long解析程序长选项参数
  6. EnterpriseLibrary2.0的学习-DAAB
  7. 服务提供者框架讲解 之 myJDBC
  8. winform 文件上传限制文件类型及文件大小
  9. 46. 考虑使用函数对象而不是函数作为STL算法的参数
  10. Redis 彻底禁用RDB持久化