LeetCode 34: Find First and Last Position of Element in Sorted Array

三世轮回 提交于 2019-11-27 07:22:39

问题描述

在这里插入图片描述

思路

找出第一个大于等于target的下标值,判断该下标对应值是否为target并且下标是否符合数字下标范围, 如果满足则为左端点,找出第一个大于等于target+1的下标值的前一个下标值为右端点

java实现

https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/discuss/14701/A-very-simple-Java-solution-with-only-one-binary-search-algorithm

public class Solution {
	public int[] searchRange(int[] nums, int target) {
        int []results=new int[]{-1,-1}; 
		int start = firstGreaterEqual(nums, target);
        if (start == nums.length || nums[start] != target) {
			return results;
		}
        int end = firstGreaterEqual(nums, target + 1) - 1;
        results[0]=start;
        results[1]=end;
		return results;
	}
    //找出第一个大于等于目标的数
    public int firstGreaterEqual(int[] nums, int target){
        int left=0;
        int right=nums.length;
        while(left<right){
            int middle=left+(right-left)/2;
            if(target>nums[middle])
                left=middle+1;    
            else
                right=middle; 
        }
        return left;
      
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!