ibm网站的 色彩风格/抖音搜索seo
问题描述
给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
输入格式
第一行包含一个数n,表示序列长度。
第二行包含n个正整数,表示给定的序列。
第三个包含一个正整数m,表示询问个数。
接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。
输出格式
总共输出m行,每行一个数,表示询问的答案。
样例输入
5
1 2 3 4 5
2
1 5 2
2 3 2
样例输出
4
2
思路:
第四行——1至5从大到小排序5 4 3 2 1 第2位是 4
第五行——2至3从大到小排序3 2 第2位是2
import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];for (int i = 0; i < arr.length; i++) {arr[i] = scanner.nextInt();}int m = scanner.nextInt(); // 指定询问个数for (int i = 0; i < m; i++) {int l = scanner.nextInt(); // 开始int r = scanner.nextInt(); // 结束int k = scanner.nextInt(); // 指定索引元素int temp[] = new int[r - l + 1];int index1 = 0; // 定义下标1 for (int j = l - 1; j <= r - 1; j++) { // 指定范围给新的数组temp[index1++] = arr[j];}Arrays.sort(temp); // 对该数组进行排序int down[] = new int[temp.length]; // 定义数组取长度int index2 = temp.length - 1; // 定义下标2 for (int j = 0; j < down.length; j++) { // 将排好序的数组按倒序方式给下一个新 的数组down[j] = temp[index2--];} System.out.println(down[k - 1]); // 输出新数组指定索引位置元素}}
}