leetcode704 二分查找
使用二分法的前提:1. 数组为有序数组 2. 数组中无重复元素
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:
1. 定义target的区间,有两种方式,一种是左闭右闭,一种是左闭右开
左闭右闭 [left, right]:
1. 循环条件:while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
2. 计算出中间值
3. 比较中间值和target
- 如果
nums[mid] == target
,则找到目标值,返回mid
。 - 如果
nums[mid] > target
,则target
在左半部分,调整right
到mid - 1
。 - 如果
nums[mid] < target
,则target
在右半部分,调整left
到mid + 1
。
4. 如果目标值不存在,返回-1
左闭右开 [left, right):
1. 循环条件:while (left < right) 要使用 <=,因为left == right是没有意义的,所以使用 <
2. 计算出中间值
3. 比较中间值和target
- 如果
nums[mid] == target
,则找到目标值,返回mid
。 - 如果
nums[mid] > target
,则target
在左半部分,调整right
到mid
。 - 如果
nums[mid] < target
,则target
在右半部分,调整left
到mid + 1
。
leetcode704 二分查找
题目链接:. - 力扣(LeetCode)
文章链接:代码随想录
思路:一个快指针(fast)和一个慢指针(slow)。快指针用于遍历数组,而慢指针用于指示新数组的末尾位置。当快指针指向的元素不等于要移除的元素时,将其复制到慢指针的位置,然后慢指针向前移动一位。如果快指针指向的元素等于要移除的元素,快指针继续前移而慢指针保持不动。