
获得徽章 6
- 最后摸鱼时间来研究 还有时间和空间效率更高的写法吗 ?(顺便帮我看看我写的有bug没 ?)
2.徒步旅行中的补给问题
小R正在计划一次从地点A到地点B的徒步旅行,总路程需要 N 天。为了在旅途中保持充足的能量,小R每天必须消耗1份食物。幸运的是,小R在路途中每天都会经过一个补给站,可以购买食物进行补充。然而,每个补给站的食物每份的价格可能不同,并且小R最多只能同时携带 K 份食物。
现在,小R希望在保证每天都有食物的前提下,以最小的花费完成这次徒步旅行。你能帮助小R计算出最低的花费是多少吗 ?
我的解法:
function solution(n, k, data) {
// 初始化一个数组来存储每天的最小花费
let cost = [];
// 携带食物数
let count = 0
// 遍历每一天
for (let i = 0; i < n; i++) {
// 当天价格
const curr_price = data[i]
const diff = k - count
for (let j = 0; j < Math.min(diff, n - i); j++) {
const price = data[i + count]
if (curr_price <= price) {
cost.push(curr_price)
count++
}
}
// 当天结束吃掉一份
count--;
if (cost.length == n) break;
}
return cost.reduce((a, b) => a + b, 0);
}展开赞过81