
principle of binary search
- Don’t discard Target
- Decrease the target range in each step
code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public class { public int lastPosition(int[] nums, int target) { if (nums == null || nums.length == 0) { return -1; } int start = 0, 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; } else if (nums[start] == target) { return start; } else { return -1; }
} }
|
complexity
time: O(log(n))
space: O(1)
近期评论