0
点赞
收藏
分享

微信扫一扫

[查找]BM17 二分查找-I-简单

鱼满舱 2022-06-13 阅读 58

​​BM17 二分查找-I​​

描述

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

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

数据范围:[查找]BM17 二分查找-I-简单_二分查找 , 数组中任意值满足 [查找]BM17 二分查找-I-简单_数组_02进阶:时间复杂度 [查找]BM17 二分查找-I-简单_数组_03 ,空间复杂度 [查找]BM17 二分查找-I-简单_二分查找_04

示例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


题解

这是基本的二分查找,实现如下:

#include <bits/stdc++.h>

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

if (nums[mid] < target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return -1;
}


举报

相关推荐

0 条评论