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.
1 public class Solution { 2 /* 3 * @param nums: An integer array sorted in ascending order 4 * @param target: An integer 5 * @return: An integer 6 */ 7 public int lastPosition(int[] nums, int target) { 8 if(nums == null || nums.length == 0) { 9 return -1; 10 } 11 int low = 0, high = nums.length - 1; 12 while(low + 1< high) { 13 int mid = low + (high - low) / 2; 14 if(nums[mid] == target) { 15 low = mid; 16 } 17 else if(nums[mid] > target) { 18 high = mid - 1; 19 } 20 else { 21 low = mid + 1; 22 } 23 } 24 if(nums[high] == target) { 25 return high; 26 } 27 else if(nums[low] == target) { 28 return low; 29 } 30 return -1; 31 } 32 }
Related Problems
First Position of Target