34. Search for a Range
来源:互联网 发布:金蝶网络破解版 编辑:程序博客网 时间:2024/06/05 02:27
1.Question
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]
.
class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { int last_label = nums.size() - 1; int left = 0, right = last_label; int mid; vector<int> res(2, -1); if(last_label == 0)//考虑数组长度为1的情况 { if(nums[0] == target) {res[0] = 0; res[1] = 0;} return res; } while(left <= right)//先找到一个target { mid = left + 0.5*(right - left); if(nums[mid] == target) break; else if(nums[mid] > target) right = mid - 1; else left = mid + 1; } if(left > right) return res; int left1 = left, right1 = mid; int left2 = mid, right2 = right; int flag = 1; while(flag)//找左边边缘的target { mid = left1 + 0.5*(right1 - left1); if(nums[mid] == target) { if(mid == 0 || nums[mid-1] != target) {res[0] = mid; flag = 0;} else right1 = mid - 1; } else left1 = mid + 1; } flag = 1; while(flag) //找右边边缘的target { mid = left2 + 0.5*(right2 - left2); if(nums[mid] == target) { if(mid == last_label || nums[mid+1] != target) {res[1] = mid; flag = 0;} else left2 = mid + 1; } else right2 = mid - 1; } return res; }};
3.Note
a. 这个题还是binary search的思想,只是需要分别找两个target(左右两边各一个)。把细节处理好就行。
0 0
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 34. Search for a Range
- 设计一个(安全、通用、灵活、可扩展)的用户登录系统
- 三层架构与MVC的区别
- 模仿ios风格的ItemPicker控件
- linux_下IP、网关、DNS地址配置
- caffe的caffe.proto
- 34. Search for a Range
- 机器学习系列(16)_怎样找到一份深度学习的工作(附学习材料,资源与建议)
- java web - 限制文件的上传类型为图片类型(.gif,.png,.jpg,.jpeg)
- 10 月 10 日,一件小事:Ping++ 获得 PCI DSS 国际安全认证
- 187. Repeated DNA Sequences
- 集成环信
- MySQL定时任务event,储存过程(定时删除指定时间前90天指定表的数据)
- 树形dp 二叉树版本与多叉树版本
- 层次凝聚聚类法