您的位置:首页 > 其它

[LeetCode]34. Search for a Range

2017-03-08 22:17 369 查看
https://leetcode.com/problems/search-for-a-range/?tab=Description

二分查找有重复数字的递增序列target的起止位置

二分变种,好好记清楚!!!

public class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = {-1, -1};
if (nums == null || nums.length == 0) {
return res;
}
int beg = 0;
int end = nums.length - 1;
while (beg <= end) {
int mid = beg + (end - beg) / 2;
if (nums[mid] >= target) {
end = mid - 1;
} else {
beg = mid + 1;
}
}
res[0] = beg < nums.length && nums[beg] == target ? beg : -1;
beg = 0;
end = nums.length - 1;
while (beg <= end) {
int mid = beg + (end - beg) / 2;
if (nums[mid] <= target) {
beg = mid + 1;
} else {
end = mid - 1;
}
}
res[1] = end >= 0 && nums[end] == target ? end : -1;
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: