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

leetcode 704.二分查找

时间:2024-07-10 14:01:11浏览次数:16  
标签:二分 right nums 704 while middle int leetcode left

重点区分:

while(left < right) 和 while(left <= right)

right = middleright = middle - 1

当处于左闭右闭区间内时,while(left <= right)

当处于左闭右开区间时,while(left < right)

right = middle和right = middle - 1,以此类推

1.原理(来源代码随想录)

(1)第一种情况

(2)第二种情况

2.代码(java版)

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

标签:二分,right,nums,704,while,middle,int,leetcode,left
From: https://blog.csdn.net/currytf/article/details/140321858

相关文章

  • 菜鸟的Leetcode(02)
    系列文章目录第1章 求和第2章 回文文章目录系列文章目录前言一、题目二、知识点三、解题步骤1.思路2.实现3.演示4.其他总结一、题目给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数......
  • 二分查找的循环条件及指针终止位置问题
    二分查找的循环条件及指针终止位置问题常见的二分搜索法的循环迭代方法分为:左闭右开和左闭右闭两种方式左闭右开:由于右边界开放,例如[1,1)是矛盾的,因此循环条件为while(l<r)。闭合指后续迭代仍需要进行对其元素进行比较。因此每次迭代结束,左指针l移动到中点的下一位l=mi......
  • LeetCode 面试题 17.05. 字母与数字
    面试题17.05.字母与数字给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。示例1:输入:["A","1","B","C","D","2","3","4","E","5&q......
  • LeetCode 1546. 和为目标值且不重叠的非空子数组的最大数目
    1546.和为目标值且不重叠的非空子数组的最大数目给你一个数组 nums 和一个整数 target 。请你返回 非空不重叠 子数组的最大数目,且每个子数组中数字和都为 target 。示例1:输入:nums=[1,1,1,1,1],target=2输出:2解释:总共有2个不重叠子数组(加粗数字表示)[1,......
  • 代码随想录-DAY⑤-哈希表——leetcode 242 | 349 | 202
    242思路先遍历字符串1,记录每个字符的个数,然后遍历字符串2,挨个减去字符个数,出现小于零的个数说明字符总数不重合。时间复杂度:O(n)空间复杂度:O(1)代码classSolution{public:boolisAnagram(strings,stringt){if(s.length()!=t.length()){......
  • 代码随想录(day1)二分法
    if语句的基本语法if要判断的条件:条件成立的时候,要做的事举例:ifnums[middle]<target:left=middle+1while语句的基本语法:while判断条件(condition):'''执行语句(statements)'''举例:whileleft<=right:middle=left+(right-left)//2题目:代码:class......
  • LeetCode【跳跃游戏】
    55.跳跃游戏给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。示例 1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下......
  • LeetCode42(接雨水)[三种解法:理解动态规划,双指针,单调栈]
    接雨水给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。这是一道困难题,难度确实有点层次.我们先来朴素思想走一波.要求能接多少雨水,我们可以具化到每个硅谷,每个硅谷能存多少雨水,那么答案就是每个硅谷的雨水所加之和.对......
  • leetcode 135.分发糖果
    题目:n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到1个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目。题目示例:示例1:......
  • 大厂面试高频题——二分查找
    35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)的算法。思考二分模板题classSolution:defsearchInsert(self,nums:List[int],target:in......