Java实现”Pair”
首先我之前对Java泛型可用的类型理解比较模糊。Java泛型可以接受所有引用类型作为类型参数,也就以为着它仅仅不支持原始数据类型。于是,要实现Pair,只需要使用数组即可。
顺带学习一个知识点,由于类型擦除,Java泛型在实际运行时是不知道实际参数类型的,会被擦除成其他们的上界(默认为Object)。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public long maxSpending(int[][] values) { long ans = 0; PriorityQueue<int[]> q = new PriorityQueue<>((a, b) -> a[0] - b[0]); int m = values.length; int n = values[0].length; for (int i = 0; i < m; i++) { q.add(new int[]{values[i][n - 1], i , n - 1}); } int all = m * n; for (int i = 1; i <= all; i++) { int[] e = q.poll(); ans += (long)e[0] * i; e[2]--; if (e[2] < 0) continue; e[0] = values[e[1]][e[2]]; q.add(e); } return ans; } }
|