34. Find First and Last Position of Element in Sorted Array 发表于 2022-01-24 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Solution { public int[] searchRange(int[] nums, int target) { int startIndex = findStartIndex(nums, target); if (startIndex == -1) { return new int[]{-1, -1}; } else { return new int[]{startIndex, findEndIndex(nums, target)}; } } private int findEndIndex(int[] nums, int target) { int left = 0, right = nums.length - 1; // [left, right] while (left <= right) { int mid = (left + right) >>> 1; if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] > target) { right = mid - 1; } else { left = mid + 1; } } // now: right, left if (right == -1 || nums[right] != target) { return -1; } return right; } private int findStartIndex(int[] nums, int target) { int left = 0, right = nums.length - 1; // [left, right] while (left <= right) { int mid = (left + right) >>> 1; if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] > target) { right = mid - 1; } else { right = mid - 1; } } // now: right, left if (left == nums.length || nums[left] != target) { return -1; } return left; }} 注意此题是搜索第一个和最后一个位置而不是搜索插入位置,所以需要比较最后停留的位置的值是否为目标值。 Reference34. Find First and Last Position of Element in Sorted Array