LeetCode 704 如何正确书写一个二分查找

题目链接

中文版:https://leetcode.cn/problems/binary-search/description/

题目描述

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

题解1:左闭右闭

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

题解2:左闭右开

java 复制代码
class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length;
        int middle = 0;
        while (left < right) {
            middle = (left + right) / 2;
            if (nums[middle] == target) {
                return middle;
            } else if (nums[middle] > target) {
                right = middle;
            } else {
                left = middle + 1;
            }
        }
        return -1;
    }
}
相关推荐
qianbo_insist6 分钟前
Mask R-CNN Fast-ReID 结合
人工智能·算法·cnn
lbb 小魔仙20 分钟前
【Java】基于 Java 的分布式系统实战:分布式锁 + 事务 + 一致性算法,干货满满
java·分布式·算法
uoKent23 分钟前
c++中的初始化列表
数据结构·c++
朔北之忘 Clancy24 分钟前
第一章 顺序结构程序设计(3)
c++·算法·青少年编程·竞赛·教材·考级·讲义
Ethan-D24 分钟前
每日一题#21 二维 DP + 计数类
java·python·算法·leetcode·动态规划
飞Link27 分钟前
微调阶段中的模型自我提升、通用模型蒸馏和数据扩充
人工智能·算法·数据挖掘
共享家952728 分钟前
力扣刷题之路
算法·leetcode·深度优先
alonewolf_9930 分钟前
Redis 7 核心数据结构指南:从基础到实战应用
数据结构·redis·分布式架构
七夜zippoe34 分钟前
Python算法优化实战:时间与空间复杂度的艺术平衡
开发语言·python·算法·贪心算法·动态规划·复杂度
青槿吖35 分钟前
【Java集合通关秘籍】从List到Set:解锁无序不重复的集合魔法✨
java·开发语言·算法