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 基础
上面的写法等同于排序算法:
节省空间和时间的写法
因为原本数据就是有序的,我们只需要选取“露头”的数中的最小值,可以避免很多不必要的比较。同样可以节省空间。
📎 参考
- 无