网站开发微信支付接入,服务器安全证书验证失败,龙岩网站建设方案优化,韩国服务器ip地址给定一个按照升序排列的整数数组 nums#xff0c;和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值#xff0c;返回 [-1, -1]。
示例 1:
输入: nums [5,7,7,8,8,10], target 8 输…给定一个按照升序排列的整数数组 nums和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值返回 [-1, -1]。
示例 1:
输入: nums [5,7,7,8,8,10], target 8 输出: [3,4] 示例 2:
输入: nums [5,7,7,8,8,10], target 6 输出: [-1,-1]
思路两个二分稍微改一下就可以找到第一个target或最后一个target
class Solution {public int[] searchRange(int[] nums, int target) {int[] ansnew int[2];ans[0]searchRangeLeft(nums,target);ans[1]searchRangeRight(nums,target);return ans;}public int searchRangeLeft(int[] nums, int target) {int left0;int rightnums.length-1;while(leftright){int mid(leftright)/2;if(nums[mid]target){rightmid-1;}else if(nums[mid]target){leftmid1;}else if(mid0 || nums[mid-1]!target){return mid;}else{rightmid-1;}}return -1;}public int searchRangeRight(int[] nums, int target) {int left0;int rightnums.length-1;while(leftright){int mid(leftright)/2;if(nums[mid]target){rightmid-1;}else if(nums[mid]target){leftmid1;}else if(midnums.length-1 || nums[mid1]!target){return mid;}else{leftmid1;}}return -1;}
}