Find the last position of a target number in a sorted array. Return -1 if target does not exist.

Have you met this question in a real interview?

Yes

Example

Given[1, 2, 2, 4, 5, 5].

For target =2, return 2.

For target =5, return 5.

For target =6, return -1.

分析: 本题关键是如果找到mid = target, 循环不能停,要把begin + mid继续下去,因为题目要找的是最后一个,不是随意一个

public class Solution {
    /**
     * @param nums: An integer array sorted in ascending order
     * @param target: An integer
     * @return an integer
     */
    public int lastPosition(int[] nums, int target) {
        // Write your code here

        if(nums == null || nums.length == 0){
            return -1;
        }

        int begin = 0;
        int end = nums.length-1;
        while(begin + 1 < end){
            int mid = begin + (end - begin)/2;
            if(nums[mid] > target){
                end = mid;
            }else{
                begin = mid; 
            }
        }

        if(nums[end] == target){
            return end;
        }else if(nums[begin] == target){
            return begin;
        }

        return -1;
    }
}

results matching ""

    No results matching ""