Search for a Range一打简单的二分题
来源:互联网 发布:linux查cpu核数 编辑:程序博客网 时间:2024/05/01 08:06
题目描述:
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 begin=0; vector<int>temp; if(nums.size()==0){ temp.push_back(-1); temp.push_back(-1); return temp; } int end=nums.size()-1; int mid=(end+begin)/2; while(begin<end){ if(nums[mid]==target) break; if(nums[mid]<target){ if(mid==begin){ mid=end; break; } begin=mid; mid=(end+begin)/2; } if(nums[mid]>target){ if(mid==end) { mid=begin; break; } end=mid; mid=(end+begin)/2; } } int a,b; if(nums[mid]==target){ a=mid; b=mid; while(nums[a]==target&&a>=0){ a--; } while(nums[b]==target){ b++; } temp.push_back(a+1); temp.push_back(b-1); } else{ temp.push_back(-1); temp.push_back(-1); return temp; } return temp; }};
阅读全文
0 0
- Search for a Range一打简单的二分题
- 【二分查找】Search for a Range
- leetcode:Search for a Range 二分查找
- leetcode 二分查找 Search for a Range
- leetcode-二分查找:Search for a range
- 二分搜索 34. Search for a Range
- 34. 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
- hdu 1019 Least Common Multiple 最小公倍数
- Spring中Bean及@Bean的理解
- (crm笔记2-1)struts2层与前端页面的连接
- jsp+Javabean+servlet实现修改
- 最短路,最小生成树,及拓扑排序模板整理
- Search for a Range一打简单的二分题
- odps mapreduce学习笔记
- 快速解读GC日志
- 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
- 菜谱
- 开关电源设计中电感的选择
- java volatile
- Trapping rain water
- 匈牙利算法模板