53 lines
1.2 KiB
Java
53 lines
1.2 KiB
Java
/*
|
|
* @lc app=leetcode id=34 lang=java
|
|
*
|
|
* [34] Find First and Last Position of Element in Sorted Array
|
|
*/
|
|
|
|
// @lc code=start
|
|
class Solution {
|
|
public int[] searchRange(int[] nums, int target) {
|
|
if(nums==null || nums.length == 0) {
|
|
return new int[]{-1, -1};
|
|
}
|
|
return new int[] {
|
|
firstEq(nums, target),
|
|
lastEq(nums, target)
|
|
};
|
|
}
|
|
|
|
private int firstEq(int[] nums, int target) {
|
|
int l = 0, r = nums.length-1, m, v=-1;
|
|
while(l <= r) {
|
|
m = l + (r-l)/2;
|
|
if(nums[m] < target) {
|
|
l = m + 1;
|
|
} else if(nums[m] > target) {
|
|
r = m - 1;
|
|
} else {
|
|
v = m;
|
|
r = m-1;
|
|
}
|
|
}
|
|
return v;
|
|
}
|
|
|
|
private int lastEq(int[] nums, int target) {
|
|
int l = 0, r = nums.length-1, m, v=-1;
|
|
while(l<=r) {
|
|
m = l + (r-l)/2;
|
|
if(nums[m] > target) {
|
|
r = m - 1;
|
|
} else if(nums[m] < target) {
|
|
l = m + 1;
|
|
} else {
|
|
v = m;
|
|
l = m + 1;
|
|
}
|
|
}
|
|
return v;
|
|
}
|
|
}
|
|
// @lc code=end
|
|
|