【题目描述】
给你一个按照非递减顺序排列的整数数组 nums
,和一个目标值 target
。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target
,返回 [-1, -1]
。
你必须设计并实现时间复杂度为 O(log n)
的算法解决此问题。
https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/?favorite=2cktkvj
【示例】
【代码】admin
基于Array.Stream()把数组转换为list, 利用list的indexOf和lastIndexOf()获取第一个和最后一个target的下标
package com.company;
// 2022-12-29
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = new int[2];
List<Integer> list = Arrays.stream(nums).boxed().mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
int i = list.indexOf(target);
int i1 = list.lastIndexOf(target);
res[0] = i;
res[1] = i1;
return res;
}
}
public class Test{
public static void main(String[] args) {
int[] arr = {5,7,7,8,8,10};
int target = 8;
new Solution().searchRange(arr, target); // 输出 [3,4]
int[] arr1 = {5,7,7,8,8,10};
int target1 = 6;
new Solution().searchRange(arr1, target1); // 输出 [-1, -1]
}
}