LeetCode 34 Search for a Range (有序数组中查找给定数字的起止下标)
2017-03-11 14:34
645 查看
题目链接: https://leetcode.com/problems/search-for-a-range/?tab=Description
Problem: 在已知递减排序的数组中,查找到给定数字的起止下标
采用两遍扫描;
第一遍扫描得到给定数字的起始下标,(从下标i==0开始到nums.lenght-1)
第二遍扫描从第一遍扫描得到的下标开始进行扫描
参考代码:
Problem: 在已知递减排序的数组中,查找到给定数字的起止下标
采用两遍扫描;
第一遍扫描得到给定数字的起始下标,(从下标i==0开始到nums.lenght-1)
第二遍扫描从第一遍扫描得到的下标开始进行扫描
参考代码:
package leetcode_50; /*** * * @author pengfei_zheng * 数组中找到target起止下标 */ public class Solution34 { public static int[] searchRange(int[] nums, int target) { int start = 0, end = nums.length-1; int []ans = {-1,-1}; while(start<=end){ int mid = (start + end)/2; if(nums[mid] >= target) end = mid - 1; else start = mid + 1; if(nums[mid]==target){ ans[0]=mid; } } start = ans[0]==-1 ? 0 : ans[0]; end=nums.length-1; while(start<=end){ int mid = (start+end)/2; if(nums[mid]<=target) start = mid + 1; else end = mid - 1; if(nums[mid]==target) ans[1]=mid; } return ans; } public static void main(String[]args){ int []nums = {5, 7, 7, 8, 8, 10}; int []ans = {0}; ans = searchRange(nums,8); for(int item:ans){ System.out.print(item+" "); } } }
相关文章推荐
- LeetCode 34. Search for a Range(有序数组,查找给定值范围)
- [LeetCode]—Search for a Range 有序数组查找target的下标范围
- [LeetCode-34] Search for a Range (寻找有序数组中关键值的索引范围)
- [leetcode] 【查找】 34. Search for a Range
- 34. Search for a Range(二分查找有重复元素数组中的目标数的第一个位置和最后一个位置)
- LeetCode 34 Search For A Range 二叉查找相关(二)
- Leetcode刷题记——34. Search for a Range(查找一个范围)
- leetcode——Search for a Range 排序数组中寻找目标下标范围(AC)
- leetcode 34. Search for a Range (二分查找)
- leetcode 34. Search for a Range 二分查找
- Search for a Range 有序数组里查找一个数的出现区间 @LeetCode
- [leetcode-二分查找]--34. Search for a Range
- leetcode题解:Search for a Range (已排序数组范围查找)
- 二分查找有序数组中某个数的所在范围 Search for a Range
- LeetCode-----34. Search for a Range(查找范围)
- leetcode:Search for a Range(数组,二分查找)
- leetcode_34——Search for a Range(二分查找)
- [leetcode 34] Search for a Range
- [LeetCode]34.Search for a Range
- LeetCode-Search for a Range-搜索范围-二分查找