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

🤗 题解

📎 参考文章

  • 代码随想录
 
 
💡
如果有问题,欢迎您在底部评论区留言,一起交流~
移除元素示例文章1(用来Duplicate)