题目:

这道题目如果没有时间复杂度的限制的话,是非常简单的一道题,有了这个限制之后呢,也不是很难
因为这个限制,就已经告诉我们了,要用二分查找法
请看代码:
class Solution {
private int extremeInsertionIndex(int[] nums, int target, boolean left) {
int res = 0;
int n = nums.length;
while (res < n) {
int mid = (res + n) / 2;
if (nums[mid] > target || (left && target == nums[mid])) {
n = mid;
}
else {
res = mid+1;
}
}
return res;
}
public int[] searchRange(int[] nums, int target) {
int[] targetRange = {-1, -1};
int leftIdx = extremeInsertionIndex(nums, target, true);
if (leftIdx == nums.length || nums[leftIdx] != target) {
return targetRange;
}
targetRange[0] = leftIdx;
targetRange[1] = extremeInsertionIndex(nums, target, false)-1;
return targetRange;
}
}
结果如下:

本文深入探讨了一道带有时间复杂度限制的编程题目,详细解析了如何运用二分查找法高效解决该问题。通过具体代码示例,阐述了算法的设计思路与实现细节,为读者提供了清晰的学习路径。
355

被折叠的 条评论
为什么被折叠?



