leetcode 34. Search for a Range
2016-06-15 10:49
316 查看
import java.util.Stack; //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]. public class Solution { public static void main(String[] args) { int[] input = {0,0,0}; int target = 2; int[] result = searchRange(input,target); System.out.println(result[0]+" "+result[1]); } public static int[] searchRange(int[] nums, int target) { int left = 0; int right = nums.length-1; int[] result = {-1,-1}; while(left<right){ //变形的二分查找 int mid = (left+right)/2; if(nums[mid]<target){ //提升l的值 left = mid+1; }else if(nums[mid]>=target){ //若相等则将r值等于m right = mid; } } if(nums[left] == target){ //若nums[l]=target,则匹配,l必为第一次出现的target脚标 result[0] = left; } right = nums.length-1; //left已经确定,只需重新定义right即可 while(left<right){ int mid = (left+right)/2+1; if(nums[mid]>target){ right = mid-1; }else if(nums[mid]<=target){ left = mid; } } if(nums[right] == target){ result[1] = right; } return result; } }
相关文章推荐
- 设计模式 - 适配器模式
- 转:艾瑞咨询2016 IM云的发展趋势
- 作业九—软件工程的总结和体会
- 使用Javascript无限添加QQ好友原理解析
- 避免Activity内存泄露
- Android应用程序框架——智能指针(一)
- STL源码剖析——queue
- tinyint对应java什么类型
- 今天正式开始自己的csdn博客生涯
- Eclipse详细设置护眼背景色和字体颜色并导出
- java代码性能优化
- 关于Docker的实践
- laravel5
- C++获取控制台打印消息,重定向stdout等打印内容
- C++考试小程序编程思路和简单设计
- 关于在linux下面和WIN7下面新建一个TinkPHP3.1.3和3.2.3项目--探讨
- 浅谈智慧家庭小优机器人通过WIFI+SSDP方式接入华为智能网关
- loadrunner11,卸载360浏览器后提示“无效的应用程序路径!请检查应用程序是否存在!
- 实用Android Studio 插件
- 深度学习 网络结构 可视化