Java 实现查找目标值在排序数组中的起始和结束位置
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] result = new int[2];
result[0] = findFirst(nums, target);
result[1] = findLast(nums, target);
return result;
}
private int findFirst(int[] nums, int target) {
int left = 0, right = nums.length - 1, result = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] >= target) {
right = mid - 1;
if (nums[mid] == target) {
result = mid;
}
} else {
left = mid + 1;
}
}
return result;
}
private int findLast(int[] nums, int target) {
int left = 0, right = nums.length - 1, result = -1;
while (left <= right) {
int mid = (left + right) / 2;
if (nums[mid] <= target) {
left = mid + 1;
if (nums[mid] == target) {
result = mid;
}
} else {
right = mid - 1;
}
}
return result;
}
}
原文地址: https://www.cveoy.top/t/topic/ot0m 著作权归作者所有。请勿转载和采集!