时间限制: 1Sec 内存限制: 128MB
题目描述:(原题链接)
给出一个有N个数的序列,编号从1 - N 。
进行Q次查询,查询编号i至j的所有数中,最大的数是多少。
输入:
一行,一个n, 2<=n<=1000。
第二行,n个整数,表示序列中的数,每个数不超过1000000且大于等于0。
第三行,一个q,表示q次询问,1<=q<=10
接下来q行,对应查询的起始编号i和结束编号j。
样例输入:
5
5 2 1 3 6
3
1 2
2 3
3 5
输出:
q行,每行输出一个整数,表示区间最大的数。
样例输出 :
5
2
6
解题思路:
利用Arrays.Sort()区间排序的思想
注意事项:
注意数组的拷贝,不能直接 “="对象的复制不能用,否则就是共同管理
参考代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt(),arr[]= new int[n];
for(int i=0;i<n;i++)
arr[i]=in.nextInt();
int q =in.nextInt(); //问题数目
while(q--!=0) {
int start=in.nextInt(),end=in.nextInt(),tmp[]=new int[n];
tmp=Arrays.copyOf(arr, n); //数组拷贝
Arrays.sort(tmp, start-1, end);
System.out.println(tmp[end-1]);
}
in.close();
}
}