首页 > 其他分享 >704. 二分查找

704. 二分查找

时间:2022-11-06 19:22:58浏览次数:80  
标签:二分 right target nums 704 mid int 查找 left

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

提示:

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

解法一:左开右闭

class Solution {
    public int search(int[] nums, int target) {
        int left = 0, right = nums.length - 1;
        while (left <= right) {
            int mid = ((right - left)>>1) + left;
            int num = nums[mid];
            if (num == target) {
                return mid;
            } else if (num > target) {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }
        return -1;
    }
}

 解法二:左开右开(区别是while 临界点和right的赋值)

class Solution {
    public int search(int[] nums, int target) {
        int left = 0, right = nums.length;
        while (left < right) {
            int mid = left + ((right - left) >> 1);
            if (nums[mid] == target)
                return mid;
            else if (nums[mid] < target)
                left = mid + 1;
            else if (nums[mid] > target)
                right = mid;
        }
        return -1;
    }
}

 

标签:二分,right,target,nums,704,mid,int,查找,left
From: https://www.cnblogs.com/fulaien/p/16863441.html

相关文章

  • 二叉树中查找后继节点问题
    二叉树中查找后继节点问题作者:Grey原文地址:博客园:二叉树中查找后继节点问题CSDN:二叉树中查找后继节点问题题目描述给定一个二叉查找树,以及一个节点,求该节点在中序遍......
  • Codeforces Round #832 (Div. 2) D (预处理+二分)
    D.YetAnotherProblem观察题干发现一定要是odd考虑发掘性质发现之后还会将[l,r]长度为奇数的区间全部赋值成这个区间的异或和我们设长度为lenlen-1个偶数个异或为......
  • replace() 数学 数学 动规 List<int[]> 数学 二分
    1678.设计Goal解析器returncommand.replace("()","o").replace("(al)","al");888.公平的糖果交换766.托普利茨矩阵只需判断:前行中除最后一个元素外剩余的元......
  • 二叉查找树
    1#include<bits/stdc++.h>2usingnamespacestd;3typedefstructSortTree4{5intdata;6structSortTree*left;7structSortTre......
  • shell-文件查找命令笔记三
    文件查找-find命令格式:find[路径][选项][操作]选项-name根据文件名查找-iname根据文件名查找,忽略大小写-perm根据文件权限查找find/etc-perm777-prun......
  • 洛谷P8775 [蓝桥杯 2022 省 A] 青蛙过河 题解 贪心+二分答案
    题目链接​​https://www.luogu.com.cn/problem/P8775​​题目大意小青蛙住在一条河边,它想到河对岸的学校去学习。小青蛙打算经过河里的石头跳到对岸。河里的石头排成了一条......
  • 用C语言查找数字个数
    【题目名称】数9的个数【题目内容】编写程序数一下1到100的所有整数中出现多少个数字9#include<stdio.h>int main(){inti=0;   intcount=0;   for(i=1;i......
  • 力扣704 二分查找
    二分查找二分查找概述:BinarySearch,也叫折半查找。折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分查找原理:首先,假设表中元素......
  • 数据结构与算法之查找
    查找【知识框架】1.查找概论查找的基本概念:查找(Searching):就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找表(SearchTable......
  • 基本算法篇——二分查找
    基本算法篇——二分查找本次我们介绍基础算法中的二分查找,我们会从下面几个角度来介绍二分查找:二分查找简述二分查找模板二分查找边界例题数的范围二分查找简述首......