type
status
date
slug
summary
tags
category
icon
password
创建时间
Aug 22, 2025 02:12 PM
给你一个下标从 0 开始大小为
m * n
的整数矩阵 values
,表示 m
个不同商店里 m * n
件不同的物品。每个商店有 n
件物品,第 i
个商店的第 j
件物品的价值为 values[i][j]
。除此以外,第 i
个商店的物品已经按照价值非递增排好序了,也就是说对于所有 0 <= j < n - 1
都有 values[i][j] >= values[i][j + 1]
。每一天,你可以在一个商店里购买一件物品。具体来说,在第
d
天,你可以:- 选择商店
i
。
- 购买数组中最右边的物品
j
,开销为values[i][j] * d
。换句话说,选择该商店中还没购买过的物品中最大的下标j
,并且花费values[i][j] * d
去购买。
注意,所有物品都视为不同的物品。比方说如果你已经从商店
1
购买了物品 0
,你还可以在别的商店里购买其他商店的物品 0
。请你返回购买所有
m * n
件物品需要的 最大开销 。堆(优先队列)§5.1 基础
上面的写法等同于排序算法:
节省空间和时间的写法
因为原本数据就是有序的,我们只需要选取“露头”的数中的最小值,可以避免很多不必要的比较。同样可以节省空间。
📎 参考
- 无