High Five
给一个2d数组, 里面是[id, score], 求每个id的top 5 score的average, 并且还要按照id排序.
因为要排序, 所以先排序, 然后只加top5即可.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class Solution { public int[][] highFive(int[][] items) { Arrays.sort(items, (a,b) -> (a[0] == b[0] ? b[1] - a[1] : a[0] - b[0])); List<int[]> list = new ArrayList<>(); int i = 0; while(i < items.length){ int cur = items[i][0]; int sum = 0; for(int j = 0; j < 5; i++,j++){ sum += items[i][1]; } list.add(new int[]{cur, sum / 5}); while(i < items.length && cur == items[i][0]){ i++; } } int[][] res = new int[list.size()][2]; for(int k = 0; k < list.size(); k++){ res[k][0] = list.get(k)[0]; res[k][1] = list.get(k)[1]; } return res; } } |