【LeeCode】34. 在排序数组中查找元素的第一个和最后一个位置

时间:2022-12-29 22:57:08

【题目描述】

给你一个按照非递减顺序排列的整数数组 ​​nums​​​,和一个目标值 ​​target​​。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值 ​​target​​,返回 ​​[-1, -1]​​。

你必须设计并实现时间复杂度为 ​​O(log n)​​ 的算法解决此问题。

​https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/?favorite=2cktkvj​

【示例】

【LeeCode】34. 在排序数组中查找元素的第一个和最后一个位置


【代码】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]
}
}