描述:给一个二维数组scores表示每个学生的各科成绩,求出学生中总成绩排名第K的索引。0 <= scores[i][j] <= 100示例:输入:scores: [[90, 80, 70], [90, 90, 90], [60, 60, 60]]k: 2输出: 0解释:总成绩中排名第二的是索引为0的学生
解题思路1:
1.先求出各个学生的总分成绩
2.取出各个学生数组元素下标
3.将数组中的元素按总分排序
4.在排好序的数组中,取出排名第K的下标
解题代码:
public class Solution {public static void main(String[] args) {//2int [][] scores = new int[][] {{90,80,70},{90,90,90},{60,60,60}};int K=1;FindTheRank(scores,K);}public int FindTheRank(int[][] scores, int K) {int n = scores.length, k = scores[0].length;//创建一个新得二维数组,存放总分和数组下标int[][] grade = new int[n][2];for(int i = 0; i < n; i++){int g = 0;for(int j = 0; j < k; j++)g += scores[i][j];grade[i][0] = g;//总分grade[i][1] = i;//数组下标}Arrays.sort(grade,(a,b)->b[0]-a[0]);System.out.println(grade[K-1][1]);return grade[K-1][1];}}
