一、整数二分
整数二分说明
- 整数二分即为在整数集合上的二分,常见的用法有:在单调序列中查找「某个数是否出现过」、「某个数最早出现的位置」以及「>= 某个数中最小的数」等。
- 解决这类问题的思想非常统一,即对坐标区间不断进行折半,以此在 O(log(n)) 的时间复杂度内确定答案,但其「实现方法」却非常多样,由此导致很多同学在此类问题上出错。
- 因此接下来将通过一个例题来介绍「记录 ans」的二分实现方法,该方法较易理解且不易出错。
整数二分示例
在排序数组中查找元素的第一个和最后一个位置。
① 题目说明
- 题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置,如果数组中不存在目标值 target,返回 [-1, -1]。设计并实现时间复杂度为 O(log(n)) 的算法解决此问题。
- 示例一:
输入:nums = [