1. 描述:给一个二维数组scores表示每个学生的各科成绩,求出学生中总成绩排名第K的索引。
    2. 0 <= scores[i][j] <= 100
    3. 示例:
    4. 输入:
    5. scores: [[90, 80, 70], [90, 90, 90], [60, 60, 60]]
    6. k: 2
    7. 输出: 0
    8. 解释:
    9. 总成绩中排名第二的是索引为0的学生

    解题思路1:
    1.先求出各个学生的总分成绩
    2.取出各个学生数组元素下标
    3.将数组中的元素按总分排序
    4.在排好序的数组中,取出排名第K的下标

    解题代码:

    1. public class Solution {
    2. public static void main(String[] args) {//2
    3. int [][] scores = new int[][] {{90,80,70},{90,90,90},{60,60,60}};
    4. int K=1;
    5. FindTheRank(scores,K);
    6. }
    7. public int FindTheRank(int[][] scores, int K) {
    8. int n = scores.length, k = scores[0].length;
    9. //创建一个新得二维数组,存放总分和数组下标
    10. int[][] grade = new int[n][2];
    11. for(int i = 0; i < n; i++){
    12. int g = 0;
    13. for(int j = 0; j < k; j++)
    14. g += scores[i][j];
    15. grade[i][0] = g;//总分
    16. grade[i][1] = i;//数组下标
    17. }
    18. Arrays.sort(grade,(a,b)->b[0]-a[0]);
    19. System.out.println(grade[K-1][1]);
    20. return grade[K-1][1];
    21. }
    22. }