type
status
date
slug
summary
tags
category
icon
password
前言:
感觉自己算法数据结构很不扎实所以来力扣刷题了zzzz
📝 主旨内容
1 题目
给定一个 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-search
2 分析
我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right] (这个很重要非常重要)。
区间的定义这就决定了二分法的代码应该如何写,因为定义target在[left, right]区间,所以有如下两点:
- while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
- if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1
🤗 题解
📎 参考文章
- 代码随想录
如果有问题,欢迎您在底部评论区留言,一起交流~
- 作者:MasterYe
- 链接:https://www.masterye.xyz//article/leetcode-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。