1. 程式人生 > >lintcode458- Last Position of Target- easy

lintcode458- Last Position of Target- easy

ger arr example strong osi tco -s 一個數 而不是

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

Example

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

For target = 2, return 2.

For target = 5, return 5.

For target = 6, return -1.

用二分法模板,縮範圍時想一下怎麽保證當前的數字不會被丟掉就好了。

其實就是因為這種要找最後一個第一個的題目才產生這種模板的。要最後一個所以逼著改指針不寫= mid - 1寫= mid,所以while條件不寫start < end寫start + 1 < end,所以最後要判斷兩個數而不是一個數。

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 start = 0; int end = nums.length - 1; while (start + 1 < end){ int mid = start + (end - start) / 2; if (nums[mid] < target){ start = mid; } else if (nums[mid] == target){ start
= mid; } else { end = mid; } } if (nums[end] == target){ return end; } if(nums[start] == target){ return start; } return -1; } }

lintcode458- Last Position of Target- easy