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

二分查找

时间:2023-04-20 19:24:16浏览次数:37  
标签:二分 right target nums int 查找 left

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-search
----------------- 分割线 ----------------------------------

首先根据名字就可以想到利用二分查找的方法去解决,二分法的前提条件:有序数组

二分法分为两种写法:左闭右闭[left,right],左闭右开[left,right),我采取的是第一种

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size() - 1;
        while(left<=right){
            int middle = (left+right)/2;
            if(nums[middle]<target){
                left = middle + 1;
            }else if(nums[middle]>target){
                right = middle - 1;
            }else{
                return middle;
            }
        }
        return -1;
    }
};

这里因为采取[left,right]要注意while里是left<=right

标签:二分,right,target,nums,int,查找,left
From: https://www.cnblogs.com/batiannixuge/p/17338029.html

相关文章

  • 查找80端口请求数最高的前20个IP
    有时候业务的请求量突然上去了,那么这个时候我们可以查看下请求来源IP情况,如果是集中在少数IP上的,那么可能是存在攻击行为,我们使用防火墙就可以进行封禁。命令: netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|h......
  • 二分查找:剑指 Offer 11. 旋转数组的最小数字
    题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2]为[1,2,3,4,5]的一次旋转,该数组的最......
  • 选择排序和二分查找
    选择排序 二分查找 ......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    目录一、基础知识-二分法解题思路-数组中删除的思路二、题目一:704.二分查找三、题目二:27.移除元素一、基础知识1.二分法解题思路要求数组必须是有序排列,仅需要根据题目的条件去确定搜索区间。第一个关键点:区间的取值。一般有左闭右闭,左闭右开,左开右闭三种,这个的选择......
  • Codeforces Round 850 (Div. 2, based on VK Cup 2022 - Final Round) E. Monsters (h
    传送门详细题解传送门  抄的ygg代码,向在这里说一下刚开始没看懂的部分。  求答案的时候是把所有的当前为止的所有数值加起来减去一个从1开始并且公差为1的等差数列的前size项和。其中size是当前最多能用到哪个位置,满足前size项能构成1,2,3,....,sz这样的形式。  假设我们......
  • 704. 二分查找(leetcode)
    https://leetcode.cn/problems/binary-search/简单二分classSolution{public:intsearch(vector<int>&nums,inttarget){intl=0,r=nums.size()-1;while(l<r){intmid=l+r>>1;if(nums[mid]......
  • 二分图最大匹配
    #include<bits/stdc++.h>usingnamespacestd;constintN=2e5+10;inte[N],h[N],ne[N],idx;voidadd(inta,intb){e[++idx]=b,ne[idx]=h[a],h[a]=idx;}intco[N];boolcheck(intu,intc){co[u]=c;for(inti......
  • 查找(1.顺序查找、2.二分法查找)
    顺序查找既是for循环,在循环内用if匹配输入的值是否有对等,有即返回对应结果如果for循环下,没有对应的匹配值,要返回提示没找到用如下方法二分法查找1.必须是一个有序的列表2.先找到数组的中间值,拿输入值与其配对3.如果值是小了往左边选中间值,再匹对。反之向右.........
  • 八百字讲清楚——BCEWithLogitsLoss二分类损失函数
    BCEWithLogitsLoss是一种用于二分类问题的损失函数,它将Sigmoid函数和二元交叉熵损失结合在一起。假设我们有一个大小为NNN的二分类问题,其中每个样本......
  • excel查找参数快速入门
    将两个sheet放在一起,然后以一个sheet的某个单元格填充为准,点击这个要填充的单元格,最终计算的结果就是当前这个sheet要对应的数值是否能查找到,如果能单元值不变;如果不能单元值变化,填充为N/A=VLOOKUP(火车站点!B9,Sheet1!$A$2:$A$120,1,FALSE)火车站点!B9表示当前你要......