704. 二分查找

704. 二分查找

题目:

给定一个 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

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。

解题:

方法一:二分查找

在升序数组 nums 中寻找目标值 target,对于特定下标 iii,比较 nums[i] 和 target 的大小:

  • 如果 nums[i]=target,则下标 i 即为要寻找的下标;

  • 如果 nums[i]>target,则 target 只可能在下标 i 的左侧;

  • 如果 nums[i]<target,则 target 只可能在下标 i 的右侧。

基于上述事实,可以在有序数组中使用二分查找寻找目标值。

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

复杂度分析

  • 时间复杂度:O(log⁡n),其中 n 是数组的长度。
  • 空间复杂度:O(1)。

相关推荐

  1. leetcode704. 二分查找

    2023-12-11 23:38:02       59 阅读
  2. 704. 二分查找

    2023-12-11 23:38:02       52 阅读
  3. Leetcode:704. 二分查找

    2023-12-11 23:38:02       77 阅读
  4. 704.二分查找

    2023-12-11 23:38:02       61 阅读
  5. LeetCode 704 二分查找

    2023-12-11 23:38:02       37 阅读
  6. Leetcode704_二分查找

    2023-12-11 23:38:02       44 阅读
  7. leetcode 704. 二分查找

    2023-12-11 23:38:02       36 阅读
  8. Leetcode704_二分查找

    2023-12-11 23:38:02       32 阅读
  9. 704. 二分查找

    2023-12-11 23:38:02       25 阅读
  10. 力扣- 704. 二分查找

    2023-12-11 23:38:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 23:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 23:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 23:38:02       82 阅读
  4. Python语言-面向对象

    2023-12-11 23:38:02       91 阅读

热门阅读

  1. Mybatis增删改查基础

    2023-12-11 23:38:02       48 阅读
  2. MySQL中替代 Oracle的decode函数

    2023-12-11 23:38:02       67 阅读
  3. Pyecharts可视化库:Python数据可视化的神器

    2023-12-11 23:38:02       55 阅读
  4. C语言实现CRC校验

    2023-12-11 23:38:02       61 阅读
  5. Qt12.11

    2023-12-11 23:38:02       65 阅读
  6. 二叉搜索树的最近公共祖先【数据结构】

    2023-12-11 23:38:02       48 阅读