题目

类型:Array
image.png

解题思路

先对 score 数组进行拷贝并排序,利用分数各不相同,对排序数组中分值进行名次编号(存入哈希表),再利用名次编号构造答案。

代码

  1. class Solution {
  2. public String[] findRelativeRanks(int[] score) {
  3. int n = score.length;
  4. String[] desc = {"Gold Medal", "Silver Medal", "Bronze Medal"};
  5. int[][] arr = new int[n][2];
  6. for (int i = 0; i < n; ++i) {
  7. arr[i][0] = score[i];
  8. arr[i][1] = i;
  9. }
  10. Arrays.sort(arr, (a, b) -> b[0] - a[0]);
  11. String[] ans = new String[n];
  12. for (int i = 0; i < n; ++i) {
  13. if (i >= 3) {
  14. ans[arr[i][1]] = Integer.toString(i + 1);
  15. } else {
  16. ans[arr[i][1]] = desc[i];
  17. }
  18. }
  19. return ans;
  20. }
  21. }