leetcode_c++:Search for a Range(034)
来源:互联网 发布:韦斯利马修斯生涯数据 编辑:程序博客网 时间:2024/06/06 01:22
题目
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
- stl-使用lower_bound和upper_bound
算法_2
- 直接二分查找修改
复杂度
O(lgn)
#include<iostream>#include<vector>#include <algorithm>using namespace std;class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int>::iterator lower=lower_bound(nums.begin(), nums.end(), target); //lower_bound返回第一个大于等于value值得位置 vector<int>::iterator upper=upper_bound(nums.begin(), nums.end(), target); //upper 是第一个大于value值得位置 vector<int> resultNo; resultNo.push_back(-1); resultNo.push_back(-1); vector<int> ret; ret.push_back(lower-nums.begin()); ret.push_back(upper-nums.begin()-1); if(*lower !=target){ return resultNo; }else{ return ret; } }};
#include<iostream>#include<vector>#include <algorithm>using namespace std;class Solution {public: vector<int> searchRange(vector<int>& nums, int target){ vector<int> ret; ret.push_back(-1); ret.push_back(-1); int left=0,right=nums.size()-1,mid; while(left<=right){ if(nums[left]==target && nums[right]==target){ ret[0]=left; ret[1]=right; break; } mid=left+(right-left)/2; if(nums[mid]<target){ left=mid+1; }else if(nums[mid]>target){ right=mid-1; }else{ if(nums[right]==target) ++left; else --right; } } return ret; }};
0 0
- leetcode_c++:Search for a Range(034)
- 034 - Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range !!!
- Search for a Range
- Search for a Range
- Search For A Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Fedora 系统配置 rtl8723b 网卡驱动
- Android-ManiFest
- Hadoop伪分布式配置
- 很好的一本linux书籍
- 设计模式学习--状态模式
- leetcode_c++:Search for a Range(034)
- Debian8.4中的OpenSSL安装
- 加1乘2平方
- 如何从activity页面跳转到fragment页面?
- hdu 1116
- java 接口 & 抽象类
- SGU 361 (构造)
- Android EditText 实现特殊格式输入
- 改变fedora23 konsole的ls输出颜色