LeetCode:Search for a Range
来源:互联网 发布:mac git tower 编辑:程序博客网 时间:2024/06/06 01:01
问题描述:
Given a sorted array of integers, 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]
.
思路:
1、利用二分查找法找到目标值;
2、从中间值向左找,找到与目标值相等的第一个值得下标,同理,找到右边最后一个相同值得下标;
例如: 3,4,5,6,6,6,6,6,6,7,8,9,左下标为3,右下标为8.
3、返回两个下标。
代码:
class Solution {public: int searchtarget(vector<int>& nums, int start,int end,int target) { int mid; if(start > end) return -1; else { mid = start + (end - start) / 2; if(nums[mid] == target) { return mid; } else if(nums[mid] > target) { return searchtarget(nums,start,mid - 1,target); } else { return searchtarget(nums,mid + 1,end,target); } } } vector<int> searchRange(vector<int>& nums, int target) { vector<int> result; int n = nums.size(); int index = searchtarget(nums,0,n-1,target); if(index == -1) { result.push_back(-1); result.push_back(-1); return result; } else { int ls = index; while(ls>0 && nums[index] == nums[ls-1]) <span style="white-space:pre"></span>ls--; int rs = index; while(rs<n-1 && nums[index] == nums[rs+1]) <span style="white-space:pre"></span>rs++; result.clear(); result.push_back(ls); result.push_back(rs); } return result; }};
0 0
- LeetCode: Search for a Range
- LeetCode Search for a Range
- [Leetcode] Search for a Range
- LeetCode : Search for a Range
- [LeetCode] Search for a Range
- [Leetcode] Search for a Range
- Leetcode Search for a Range
- [LeetCode]Search for a Range
- LeetCode-Search for a Range
- [leetcode] Search for a Range
- LeetCode - Search for a Range
- Search for a Range leetcode
- LeetCode | Search for a Range
- LeetCode - Search for a Range
- LeetCode: Search for a Range
- leetcode: Search for a Range
- 【leetcode】Search for a Range
- Leetcode: Search for a Range
- Android studio 1.4 学习笔记
- spring、structs、habrinate 的文字常识解释
- [备忘]适配Android M 将HttpClient替换为HttpUrlConnection相关资料
- java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
- cocos2d-x移植到android
- LeetCode:Search for a Range
- SVN使用小结
- tomcat下部署 solr 5.3.1
- 常用知识
- works的题
- 相互激励
- 黑马程序员——流程控制语句
- LM(Levenberg-Marquard)算法的实现
- Understanding Linux /proc/cpuinfo