leetcode-34. Search for a Range
来源:互联网 发布:如何做好一个淘宝运营 编辑:程序博客网 时间:2024/05/16 02:47
leetcode-34. 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].
既然要logn肯定是要二分找了,基本思路就是先二分找到target,如果没有就返回[-1,-1]。
如果找到了target在依次去找target的左端点和右端点。
public class Solution { public int[] searchRange(int[] nums, int target) { int [] ret = new int[2]; ret[0]=-1; ret[1]=-1; int left = 0,right = nums.length-1,mid = 0; while(left <= right){ mid = (left + right)/2; if(target == nums[mid]) break; if(nums[mid]<target) left = mid + 1; if(nums[mid]>target) right = mid - 1; } if(target==nums[mid]){ ret[0] = findleft(nums,target,mid); ret[1] = findright(nums,target,mid); } return ret; } private int findleft(int[] nums,int target, int right){ int left = 0; while(left <= right){ int mid = (left+right)/2; if(nums[mid]==target){ if( mid==0 || nums[mid-1]!=target) return mid; else right = mid-1; }else{ left = mid + 1; } } return right; } private int findright(int[] nums,int target, int left){ int right = nums.length-1; while(left <= right){ int mid = (left+right)/2; if(nums[mid]==target){ if( mid==nums.length-1 || nums[mid+1]!=target) return mid; else left = mid + 1; }else{ right = mid-1; } } return left; }}
0 0
- [LeetCode]34.Search for a Range
- LeetCode --- 34. Search for a Range
- LeetCode 34.Search for a Range
- [Leetcode] 34. Search for a Range
- [leetcode] 34.Search for a Range
- 【leetcode】34. Search for a Range
- [leetcode] 34. Search for a Range
- Leetcode 34. Search for a Range
- LeetCode 34. Search for a Range
- <LeetCode OJ> 34. Search for a Range
- 34. Search for a Range LeetCode
- [Leetcode]34.Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- leetcode 34. Search for a Range
- LeetCode *** 34. Search for a Range
- LeetCode 34. Search for a Range
- 读书笔记 · Accelerated C++ 一
- 数据字典开发使用
- 深入浅出JMS(二)--ActiveMQ简单介绍以及安装
- android studio library生成jar包和aar的方法总结
- 求图形的最大面积
- leetcode-34. Search for a Range
- 【研发管理】三手项目 接盘时 必须要做的四件事 2
- 快学Scala学习笔记及习题解答(10-11特质与操作符)
- 正则表达式实例
- 工作空闲时整理的一些笔记
- [编程题] 优雅的点--网易
- MongoDB安装教程
- bzoj 1415 [Noi2005]聪聪和可可 概率dp
- LeetCode 85 (Maximal-Rectangle)java