在排序数组中查找元素的第一个位置和最后一个位置
Contents
问题描述
本质是范围查找,可以用二分查找来解决
https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
代码实现细节
- 寻找左边界和有边界可以用一个函数来完成,但是需要传入一个参数来表示究竟寻找的是左边界还是有边界!
- 寻找左边界时有两种情况
- 元素不存在,此时左边界可能超出界限,或者在nums中对应的数字与元素不相等。
- 元素存在,此时返回的index就是target的下标。
- 寻找有边界时,有两种情况
- 元素不存在,这种情况和寻找左边界时相同。
- 元素存在,此时返回的index是target的下一个元素的位置,也就是说index-1才是target对应的位置。
- 之所以使用这样的左闭右开的区间,是为了思考的方便
- 如果是左闭右闭:不方便将左边界,右边界用一个函数来实现!
- 所以为了方便用一个函数实现两种功能,必须一开一闭!
Author 段新朋
LastMod 2020-07-09