leetcode--Search for a Range
来源:互联网 发布:玻璃幕墙设计软件 编辑:程序博客网 时间:2024/06/03 10:07
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]
.
题意:给定一个排序数组,有重复元素。给定一个target,在数组中找到target的其实位置和结束位置
要求时间复杂度为O(logn)
如果target不在数组中,返回[-1,1];
分类:数组,二分法
解法1:二分查找找到target所在位置。然后从该位置开始,向两边查找边缘。
public class Solution { public int[] searchRange(int[] nums, int target) { int[] res = new int[2]; if(nums.length==0) return new int[]{-1,-1}; int low = 0; int high = nums.length-1; int mid = 0; while(low<=high){ mid = (low+high)/2; if(nums[mid]==target) break; else if(nums[mid]>target) high = mid-1; else low = mid+1; } if(nums[mid]==target){ int i = mid-1; while(i>=0 && nums[i]==target){ i--; } if(nums[i+1]==target) res[0] = i+1; else res[0] = mid; i = mid+1; while(i<nums.length&&nums[i]==target){ i++; } if(nums[i-1]==target) res[1] = i-1; else res[1] = mid; return res; }else{ return new int[]{-1,-1}; } }}
0 0
- LeetCode: Search for a Range
- LeetCode Search for a Range
- [Leetcode] Search for a Range
- LeetCode : Search for a Range
- [LeetCode] Search for a Range
- [Leetcode] Search for a Range
- Leetcode Search for a Range
- [LeetCode]Search for a Range
- LeetCode-Search for a Range
- [leetcode] Search for a Range
- LeetCode - Search for a Range
- Search for a Range leetcode
- LeetCode | Search for a Range
- LeetCode - Search for a Range
- LeetCode: Search for a Range
- leetcode: Search for a Range
- 【leetcode】Search for a Range
- Leetcode: Search for a Range
- 冒泡排序bubble sort
- super语句,和方法覆盖
- Zookeeper常见问题整理
- 高斯滤波器
- 微博随便看看
- leetcode--Search for a Range
- Android Manifest文件配置
- NYOJ 835 吉他练习
- 2.处理器与设备间数据交换方式
- UIManager的界面问题
- Android.mk 用法介绍
- UIViewController的生命周期及iOS程序执行顺序
- BZOJ 1009: [HNOI2008]GT考试 AC自动机+矩阵快速幂
- android:SharedPreferences(参数)