Search for a Range
2015-06-13 08:06
411 查看
Search for a Range
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].
use binary search to search for the ranges.
public class Solution { public int[] searchRange(int[] nums, int target) { if (nums == null || nums.length == 0) return new int[]{-1,-1}; int[] bound = new int[2]; int start = 0; int end = nums.length - 1; int mid = 0; while (start < end - 1) { mid = start + (end - start) / 2; if (nums[mid] == target) end = mid; else if (nums[mid] > target) end = mid; else start = mid; } if (nums[start] == target) bound[0] = start; else if (nums[end] == target) bound[0] = end; else { return new int[]{-1,-1}; } start = 0; end = nums.length - 1; while (start < end - 1) { mid = start + (end - start) / 2; if (nums[mid] == target) start = mid; else if (nums[mid] > target) end = mid; else start = mid; } if (nums[end] == target) bound[1] = end; else if (nums[start] == target) bound[1] = start; else { return new int[]{-1,-1}; } return bound; } }
相关文章推荐
- 告诉你LTE-FDD与LTE-TDD的区别
- 详解xml文件描述,读取方法以及将对象存放到xml文档中,并按照指定的特征寻找的方案
- (1)单例模式
- 黑马程序员——java基础-正则表达式
- [bzoj 4080] Wf2014 Sensor Network
- 获取网络软件更新信息 并发送消息 通知 handler 更新UI
- android 获取 版本号 和 手机的 部分信息
- Docker的安全基准
- Python 学习笔记6
- Oracle数据库之PL/SQL程序基础设计
- 黑马程序员——高新技术-反射
- [问题2015S14] 复旦高等代数 II(14级)每周一题(第十五教学周)
- 实验五
- Redis 集群部署( 转载)
- 06-13最新Xcode7 beta版迅雷离线下载
- 电脑故障:win7键盘失灵,鼠标能用
- HID接收到的数据转成字串 bytes 转成 string
- OSChina 周六乱弹 —— 掉进粪坑是种怎样的体验?
- Android 生成keystore,两种方式(转载)
- 人穷久了或者累久了会sb