首页 > 其他分享 >二分查找法-I

二分查找法-I

时间:2024-05-25 22:59:21浏览次数:13  
标签:二分 13 target nums int len 查找 整型

描述

请实现无重复数字的升序数组的二分查找

给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1

数据范围:0≤len(nums)≤2×1050≤len(nums)≤2×105 , 数组中任意值满足 ∣val∣≤109∣val∣≤109

进阶:时间复杂度 O(log⁡n)O(logn) ,空间复杂度 O(1)O(1)

示例1

输入:

[-1,0,3,4,6,10,13,14],13

返回值:

6

说明:

13 出现在nums中并且下标为 6     

示例2

输入:

[],3

返回值:

-1

说明:

nums为空,返回-1     

示例3

输入:

[-1,0,3,4,6,10,13,14],2

返回值:

-1

说明:

2 不存在nums中因此返回 -1    

思路

单纯从题解来看,直接遍历一遍就行,但是题目要求用二分查找,就是每次找每一段中间的位置跟目标值进行比较

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param target int整型
     * @return int整型
     */
    public int search (int[] nums, int target) {
        int len = nums.length;
        if (len == 0) return -1;
        int start = 0;
        int end = len - 1;
        int flag = 0;
        while (start <= end) {
            flag = (end + start) / 2;
            if (nums[flag] == target) return flag;
            else if (nums[flag] > target) {
                end = flag - 1;
            } else {
                start = flag + 1;
            }
        }
        return -1;
    }
}

标签:二分,13,target,nums,int,len,查找,整型
From: https://blog.csdn.net/2402_84062759/article/details/139104449

相关文章

  • 磁力多多,搜索引擎大全,如何使用蜘蛛磁力查找磁力链
    磁力链接是一种特殊的下载链接,磁力链接可以理解为一个文件识别码,而并非具体的资源地址,下载软件需要拿着这个识别码去整个互联网(DHT网络)去寻找持有该资源的用户(节点),如果找到则可以进行传输下载。一般年代越久远的磁力链接下载成功的几率越小,因为持有该资源的节点越少。一般......
  • 机场大巴(二分查找与二分答案)
    题目描述一场神秘大会要在小明的家里举办了!他的处于世界各地的客人将会到达当地的机场,前来参会。具体地说,有N个客人到达了机场(1≤N≤100000),其中客人i在时间ti(0≤ti≤10^9)到达。小明安排了M(1≤M≤10^5)辆大巴来机场接这些客人。每辆大巴可以乘坐C个客人(1≤C≤N)。小明正在......
  • JS核心语法【流程控制语句、函数】;DOM【查找元素、操作元素、事件】--学习JavaEE的day
    day48JS核心技术JS核心语法继day47注意:用到控制台输出、弹窗流程控制语句Ifelse、For、For-in(遍历数组时,跟Java是否一样【java没有】)、While、Dowhile、break、continue案例:1.求1-100之间的偶数之和<!DOCTYPEhtml><html> <head> <metacharset="UTF......
  • 1-数组-11-二分查找-LeetCode704
    1-数组-11-二分查找-LeetCode704参考:代码随想录LeetCode:题目序号35更多内容欢迎关注我(持续更新中,欢迎Star✨)Github:CodeZeng1998/Java-Developer-Work-Note技术公众号:CodeZeng1998(纯纯技术文)生活公众号:好锅(Lifeismorethancode)博客园:CodeZeng1998其他平台:CodeZeng19......
  • 图论-二分图匹配匈牙利算法
    不得不说,如果以现实角度代入此算法的理解,就合理了很多,虽然有悖道德准则重点在于以下几点每次给女生分配男生前,都把男生全部初始化为可预定状态(即使他已经被别人成功匹配了)在所有女生中意的男生中遍历,如果发现该男生可预订就先预定,然后看他是否已经有主了,如果有主了,就dfs(matc......
  • 代码随想录算法训练营第一天 | 704.二分查找;27. 移除元素
    代码随想录算法训练营第一天|704.二分查找(红蓝模板法);27.移除元素(双指针法)704题链接:https://leetcode.cn/problems/binary-search/description/二分查找:https://programmercarl.com/0704.二分查找.html#其他语言版本二分查找红蓝法笔记:二分查找为什么总是写错?_哔哩哔哩_bil......
  • 二分查找
    二分查找的写法(有两种,这里只记录第一种): 如果区间是[a,b],即可以取到low、high,则mid=(low+high)/2:1.while(low<=high){..},注意此处是"<="2.if(v[mid]<target){low++;}3.if(v[mid]>target){high--;}这里条件控制一定要明确:<=、low++、high--。补充:while(low<=h......
  • 【CodeChef】Limit of MEX(二分、ST表、组合数学)
    题目大意:计算\(\sum_{L=1}^{N}\sum_{R=L}^{N}f(A_L,...,A_R)\),其中\(f(A_1,A_2,...,A_N)=\max(A_1,A_2,...,A_N)-count(A_1,A_2,...,A_N)+1\),\(count\)函数的值为参数中不同元素的个数。考虑计算\(\sum_{L=1}^{N}\sum_{R=L}^{N}max(A_1,A_2,...,A_N)\)。对于任意\(1\lei\len......
  • 二分图的判定(Bipartite graph pending)
    二分图的判定(Bipartitegraphpending)////CreatedbyLANSGANBSon24-5-23.///**codetemplate:https://github.com/LANSGANBS/code-template*local:C:\Users\18019\CLionProjects\.cpp-code*URL:NULL*Last_Status:NULL*写完这道就去原*/#include<b......
  • 二分图
    二分图的概念:如果将一个无向图的结点染成黑色或白色,并且可以满足任意相同颜色的两点之间没有边,这个无向图就是二分图。一个图是否为二分图,一般用染色法判断。用\(0,1\)表示顶点的颜色。将任意一个顶点任意染色,然后遍历图,如果遇到没染色的点,就染成与这个点相反的颜色;否则判断......