首页 > 代码库 > [leetcode-34-Search for a Range]
[leetcode-34-Search for a Range]
Given an array of integers sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm‘s runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].
思路:
二分查找。。写的好啰嗦。待优化。
vector<int> searchRange(vector<int>& nums, int target) { int len = nums.size(),low=0,high = len-1,mid = low +(high-low)/2; vector<int>ret; while (low <= high) { mid = low + (high - low) / 2; if (nums[mid] == target) { while (mid>=0 && nums[mid] == target) { mid--; } ret.push_back(mid + 1); mid++; while (mid<len && nums[mid] == target) { mid++; } ret.push_back(mid - 1); break; } else if (nums[mid]<target) { low = mid + 1; } else high = mid - 1; } if (ret.size()==0) { ret.push_back(-1), ret.push_back(-1); } return ret; }
[leetcode-34-Search for a Range]
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。