LeetCode | 34. Find First and Last Position of Element in Sorted Array

mac2025-05-20  54

34. Find First and Last Position of Element in Sorted Array

Description

描述:https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/description/ 题意:在有序数组中,查找目标数的第一次和最后一次出现的下标,没有则返回-1。

Solution: (Java)

class Solution { public int[] searchRange(int[] nums, int target) { int[] indexs = new int[2]; int left = 0, right = nums.length-1, mid, first = -1, last = -1; indexs[0] = -1; indexs[1] = -1; while (left <= right) { mid = (left + right) / 2; if (nums[mid] == target) { first = mid; last = mid; while (first >= 0) { if (nums[first] == target) { indexs[0] = first; first--; } else break; } while (last <= nums.length-1) { if (nums[last] == target) { indexs[1] = last; last++; } else break; } break; } else if (nums[mid] > target) { right = mid - 1; } else { left = mid + 1; } } return indexs; } }

思路

二分法查找,复杂度要求O(log n);稍微变动二分查找即可,在找到目标之后,往目标的左右两边扩展查找即可;改进:在找到目标后往两边扩展时,还可以继续用二分法。
最新回复(0)