LeetCode0704-二分查找

题目:

给定一个 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]之间。

代码:

/*** 0704-二分查找* 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。* <p>* 示例 1:* <p>* 输入: nums = [-1,0,3,5,9,12], target = 9* 输出: 4* 解释: 9 出现在 nums 中并且下标为 4* <p>* 示例 2:* <p>* 输入: nums = [-1,0,3,5,9,12], target = 2* 输出: -1* 解释: 2 不存在 nums 中因此返回 -1* <p>* 提示:* <p>* 你可以假设 nums 中的所有元素是不重复的。* n 将在 [1, 10000]之间。* nums 的每个元素都将在 [-9999, 9999]之间。*//*** 暴力解法*/
class Solution01 {public int search(int[] nums, int target) {for (int i = 0; i < nums.length; i++) {if (nums[i] == target) {return i;}}return -1;}
}/*** 二分查找*/
class Solution02 {public int search(int[] nums, int target) {int left = 0;int right = nums.length - 1;while (left <= right) {/** mid = left + (right - lef) / 2 等同于 mid = (left + right) /2 ,* 为了防止先进行加法防止溢出,采用该方式。*/int mid = left + (right - left) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else if (nums[mid] > target) {right = mid - 1;}}return -1;}
}
/**
* 测试类
*/
public class Study0704 {public static void main(String[] args) {System.out.println(new Solution02().search(new int[]{-1, 0, 3, 5, 9, 12}, 9));}
}

结果:

LeetCode0704-二分查找相关推荐

  1. LeetCode0704.二分查找 Go语言AC笔记

    时间复杂度:O(log n) 解题思路 初始化left和right指针,for循环条件为left<right,循环内计算mid,比较target和nums[mid]的大小,如果相等就返回mid, ...

  2. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  3. LeetCode简单题之二分查找

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

  4. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  5. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  6. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  7. 二分法:二分查找(递归+非递归)实现

    二分查找又称折半查找,首先,假设表中元素是按升序排列,将 表中间位置的关键字与查找关键字比较: 如果两者相等,则查找成功; 否则利用中间位置将表分成前.后两个子表: 1)如果中间位置的关键字大于查找关 ...

  8. python数据结构与算法:二分查找

    二分查找:python 实现 def binary_seaech(alist,item):"""二分查找 递归实现"""n = len(al ...

  9. 【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作

    目录 一.lower_bound 1.原型: 2.说明: 3.官方demo 二.upper_bound 1.原型: 2.说明: 3.官方demo 三.binary_search 1.原型: 2.说明: ...

  10. 二分查找的循环实现和递归实现

    自己实现了二分查找的循环实现和递归实现 说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法.虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算.     要求传入的表是 ...

最新文章

  1. 【点云论文速读】最佳点云分割分析
  2. VS恢复默认设置的2种方法
  3. Python中通过lambda抛异常的奇技淫巧
  4. [Redux/Mobx] 举例说明怎么在redux中定义action?
  5. 解决yum锁定Another app is currently holding the yum lock; waiting for it to exit...
  6. xhtml html
  7. Android 进程间通信——AIDL
  8. python画图颜色代码_Python-使用matplotlib创建自己的颜色图并绘制颜色比例
  9. Bootstrap-点击“×”,可以关闭页面
  10. 视频播放时,关键帧丢失时造成的透明水影现象
  11. PCIE知识点-003:PCIE协议中的upstream概念
  12. 碰见参数错误咋解决?
  13. 极虎病毒创造的四个最
  14. 等差数列java用等差公式写_等差数列
  15. ggplot2作图之PcoA
  16. 罗技 Logitech flow 连接
  17. Asterisk电子传真-5
  18. EasyX入门和介绍
  19. 云技术背景下ssl证书可以提供怎样的安全服务呢?
  20. 【分治】02:二分答案

热门文章

  1. php去除emoji,php去除emoji表情
  2. shell 的大于等于小于等
  3. Spring中的接口驱动控制器
  4. java strom实例_strom wordcount java 实现案例
  5. 洛谷P1725 琪露诺
  6. formula 返回list_如何在Hibernate / JPA中使用@Formula
  7. 如何通过低代码平台搭建以“督办”为中心的办公管理系统
  8. ACER-4738ZG 拆机改散热
  9. 6款好用的在线思维导图工具推荐
  10. Java 压缩ZIP包后 压缩包内文件名乱码问题解决