本题是单次扫描的贪心选择:
price <= budget 的套餐。bandwidth 更大的。price 更小的(返回值仍是带宽)。-1。采购系统要在预算内选一个带宽套餐。给定二维数组 packages,每一项为 [bandwidth, price]:
bandwidth:套餐带宽(越大越好)price:套餐价格以及整数 budget:可用预算。
选择规则:
price <= budgetbandwidth 最大的price 最小的-1请返回最终选中的套餐带宽;买不起时返回 -1。
请实现:
bestBandwidth(packages: int[][], budget: int) -> int
两行:
packages,形如 [[100, 50], [200, 120], [150, 80]]budget约束:
一个整数:选中的带宽,或 -1。
输入:
[[100, 50], [200, 120], [150, 80]]
100
输出:
150
说明:预算 100。[200,120] 买不起;[100,50] 与 [150,80] 中带宽更大的是 150。
输入:
[[300, 200], [100, 50]]
40
输出:
-1
说明:所有套餐都买不起。
输入:
[[100, 60], [100, 40], [80, 30]]
60
输出:
100
说明:买得起的最大带宽是 100,对应价格 60 与 40,按规则选更便宜的那个,返回的带宽仍是 100。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.