输入{5,7,7,8,8,8,10},target=10;输出[6,6]

输入{5,7,7,8,8,8,10},target=5;输出[0,-1]

二.问题解答:


方法:线性扫描(即依次遍历数组)

第一次遍历从左往右遍历,直到找到开始位置的索引值;第二次遍历从右往左遍历,直到找到结束位置的索引值。

三.算法分析:


1.时间复杂度为O(N),额外空间复杂度为O(1)。

代码如下


import java.util.Arrays;
import java.util.Scanner;
/*
• 问题:在排序数组中查找元素的开始位置和结束位置
*/
public class SearchRange {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
String str=in.nextLine();
int target=in.nextInt();
String [] strArray=str.split(“,”);
int[] arr=new int[strArray.length];
for(int i=0;i<arr.length;i++) {
arr[i]=Integer.valueOf(strArray[i]);
}
int[] result= SearchRange(arr, target);