Leetcode34. 在排序数组中查找元素的第一个和最后一个位置(二分模板题)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode34. 在排序数组中查找元素的第一个和最后一个位置(二分模板题)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
解题思路
这一题可以直接看我之前总结的二分模板题,一模一样。
题目链接:ACWing789. 数的范围https://blog.csdn.net/qq_44713772/article/details/116003794
代码
class Solution {
public int[] searchRange(int[] nums, int target) {
if(nums.length == 0)
return new int[]{-1, -1};
int l = 0, r = nums.length - 1;
while(l < r) {
int mid = r + l >> 1;
if(nums[mid] >= target)
r = mid; //代表答案在左边且包含mid这个点
else
l = mid + 1; //代表答案在右边且不包含mid这个点
}
int left = l;
if(nums[left] != target) //如果target在数组不存在
return new int[]{-1, -1};
else {
l = 0;
r = nums.length - 1;
while(l < r) {
int mid = r + l + 1 >> 1; //加1为了防止死循环
if(nums[mid] <= target)
l = mid; //代表答案在右边且包含mid这个点
else
r = mid - 1; //代表答案在左边且不包含mid这个点
}
return new int[]{left, r};
}
}
}
复杂度分析
- 时间复杂度:O(logn)
- 空间复杂度:O(1)
以上是关于Leetcode34. 在排序数组中查找元素的第一个和最后一个位置(二分模板题)的主要内容,如果未能解决你的问题,请参考以下文章
[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)
算法leetcode|34. 在排序数组中查找元素的第一个和最后一个位置(rust重拳出击)
[LeetCode]34. 在排序数组中查找元素的第一个和最后一个位置(二分)
leetcode-34在排序数组中查找元素的第一个和最后一个位置