[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)
Posted ACBingo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)相关的知识,希望对你有一定的参考价值。
题目要求用O(logn),明显要用二分。
其实二分不难,难的是要处理好边界
class Solution {
public int[] searchRange(int[] nums, int target) {
int i = 0, j = nums.length;
int mid = (i + j) / 2;
int p = -1;
while (i < j) {
if (nums[mid] == target) {
p = mid;
break;
}
if (nums[mid] > target) {
if (j == mid) break;
j = mid;
mid = (i + j) / 2;
} else {
if (i == mid) break;
i = mid;
mid = (i + j) / 2;
}
}
if (p == -1) {
return new int[]{-1, -1};
} else {
int a = p, b = p;
while (a > 0 && nums[a - 1] == target) a--;
while (b < nums.length - 1 && nums[b + 1] == target) b++;
return new int[]{a, b};
}
}
}
以上是关于[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)的主要内容,如果未能解决你的问题,请参考以下文章
[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)
算法leetcode|34. 在排序数组中查找元素的第一个和最后一个位置(rust重拳出击)
[LeetCode]34. 在排序数组中查找元素的第一个和最后一个位置(二分)
LeetCode 34 在排序数组中查找元素的第一个和最后一个位置