标签:
网上看到的思路更好,网上说的是,先用二分法找到左端点,再用二分搜索找到右断点。问题即得到解决。
我的思路不太好,我是首先找到等于target的索引,然后以此为中心向两边扩。
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int len=nums.size(); int l=0,r=len-1; int mid; vector<int>res; int flag=0; while(l<=r) { mid=l+(r-l)/2; if(nums[mid]<target) l=mid+1; else if(nums[mid]>target) r=mid-1; else { flag=1; break; } } if(flag==0) { res.push_back(-1); res.push_back(-1); } else { l=mid; r=mid; while(l>=0&&nums[l]==target) { if(nums[l]==target) l--; } while(r<=len-1&&nums[r]==target) { if(nums[r]==target) r++; } res.push_back(l+1); res.push_back(r-1); } return res; } };
标签:
原文地址:http://www.cnblogs.com/qiaozhoulin/p/4581391.html