publicclassSolution { /** * @param nums: An integer array sorted in ascending order * @param target: An integer * @return: An integer */publicintlastPosition(int[] nums,int target) {if (nums ==null||nums.length==0) {return-1; }int left =0;int right =nums.length-1;while (left +1< right) {int mid = left + (right - left) /2;if (nums[mid] <= target) { left = mid; } else { right = mid; } }if (nums[right] == target) return right;if (nums[left] == target) return left;return-1; }}
Notes
This is almost the same as finding the first position of target. We return right if possible at the end to ensure that it is the last position of target.