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;
    }
}
相关推荐
Yzzz-F6 小时前
算法竞赛进阶指南 动态规划 背包
算法·动态规划
程序员-King.6 小时前
day124—二分查找—最小化数组中的最大值(LeetCode-2439)
算法·leetcode·二分查找
predawnlove6 小时前
【NCCL】4 AllGather-PAT算法
算法·gpu·nccl
驱动探索者6 小时前
[缩略语大全]之[内存管理]篇
java·网络·算法·内存管理
风筝在晴天搁浅7 小时前
hot100 234.回文链表
数据结构·链表
·云扬·7 小时前
MySQL Join关联查询:从算法原理到实战优化
数据库·mysql·算法
bbq粉刷匠7 小时前
二叉树中两个指定节点的最近公共祖先
java·算法
Alsn867 小时前
29.Java中常见加解密算法的基本实现
java·开发语言·算法
1001101_QIA7 小时前
OpenMP学习笔记
算法
Coovally AI模型快速验证7 小时前
YOLO11算法深度解析:四大工业场景实战,开源数据集助力AI质检落地
人工智能·神经网络·算法·计算机视觉·无人机