2931.购买物品的最大开销
2024-12-12 08:51:48

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;
}
}