34. Search for a Range**
来源:互联网 发布:网络销售代理产品 编辑:程序博客网 时间:2024/05/22 13:16
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]
.
public int[] searchRange(int[] nums, int target) { int [] result = {-1,-1}; if (nums.length==0) return result; int low = 0, high =nums.length-1; while(low<high){ int mid = low +(high-low)/2; if(nums[mid]<target) low =mid+1; else high =mid; } if(nums[low]!=target) return result; else result[0] = low; high = nums.length-1; while(low<high){ int mid = low+(high-low)/2+1; if(nums[mid]>target) high = mid-1; else low = mid; } result[1]=high; return result; }总结:两个binary search, 分别搜寻左右端点。
一个小trick, 在搜寻右端点的时候,mid = low+(high-low)/2+1,使得等式向右偏。否则,如果low =mid,(low+high)/2==mid时,若nums[mid]==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
- sqlsrv函数(自用持续更新)
- 一些对计算机有用的资源
- 2317 Game(哈尔滨理工大学)
- 一次gitlab的重新启用之旅
- 正式运行的服务器,你都做过哪些优化
- 34. Search for a Range**
- PCB层叠设计一般规则-整理
- zoj1244
- 字符、字节、字长
- Activity跳转时传递数据(包Bundle)
- 不同摄像头的精度测试
- 【STL】poj2259 Team Queue (队列+map的应用)
- nginx下的rewrite
- 我的书单 2017