LeetCode—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

题目解析:

本题的实质是二分查找,定义左右两个指针left、right,开始时分别指向数组的首和尾,以及一个中间值mid=(left+right)/2。然后就是分情况讨论,mid和target的大小关系:

  • nums[mid]=target,直接返回mid;
  • nums[mid]<target,则说明target在mid的右边,left指针移动到mid的右边,即left=mid+1;
  • nums[mid]>target,则说明target在mid的左边,right指针移动到mid的左边,即right=mid-1;

实现代码:

java 复制代码
class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length-1;
        while(left<=right){
            int mid = (left+right)/2;
            if(nums[mid] == target){
                return mid;
            }else if(nums[mid]>target){
                right = mid-1;
            }else{
                left = mid+1;
            }
        }
        return -1;  //查找失败
    }
}
相关推荐
weixin_307779132 小时前
软件演示环境动态扩展与成本优化:基于目标跟踪与计划扩展的AWS Auto Scaling策略
算法·云原生·云计算·aws
Carl_奕然2 小时前
【机器视觉】一文掌握常见图像增强算法。
人工智能·opencv·算法·计算机视觉
放羊郎2 小时前
人工智能算法优化YOLO的目标检测能力
人工智能·算法·yolo·视觉slam·建图
无敌最俊朗@3 小时前
友元的作用与边界
算法
Miraitowa_cheems3 小时前
LeetCode算法日记 - Day 104: 通配符匹配
linux·数据结构·算法·leetcode·深度优先·动态规划
程序员东岸3 小时前
从零开始学二叉树(上):树的初识 —— 从文件系统到树的基本概念
数据结构·经验分享·笔记·学习·算法
甄心爱学习4 小时前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
爪哇部落算法小助手5 小时前
每日两题day44
算法
不穿格子的程序员6 小时前
从零开始写算法——二分-搜索二维矩阵
线性代数·算法·leetcode·矩阵·二分查找
Kuo-Teng6 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list