34. 在排序数组中查找元素的第一个和最后一个位置
题目:
给你一个按照非递减顺序排列的整数数组 nums
,和一个目标值 target
。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target
,返回 [-1, -1]
。
你必须设计并实现时间复杂度为 O(log n)
的算法解决此问题。
思路:
简单的二分查找可以做到,这里锻炼一下双指针;
只要注意结束条件就可以了
代码:
public int[] searchRange(int[] nums, int target) {int[] res = new int[2];for (int i = 0; i <= 1; i++) {res[i] = -1;}int i = 0;int j = nums.length - 1;while (i <= j && i <= nums.length - 1 && j >=0) {if (nums[i] == target) {res[0] = i;} else {i++;}if (nums[j] == target) {res[1] = j;} else {j--;}if (res[0] !=-1 && res[1] !=-1) {break;}}return res;}