Skip to content

746. 使用最小花费爬楼梯

746. 使用最小花费爬楼梯

代码

javascript
// 746. 使用最小花费爬楼梯:https://leetcode.cn/problems/min-cost-climbing-stairs/description/
// 输入:[10,15,20]
// 输出:15

export function minCostClimbingStairs (cost) {
  const n = cost.length
  let prev = 0
  let curr = 0
  let next = 0
  for (let i = 2; i <= n; i++) {
    next = Math.min(curr + cost[i - 1], prev + cost[i - 2])
    prev = curr
    curr = next
  }
  return curr
}
typescript
// 746. 使用最小花费爬楼梯:https://leetcode.cn/problems/min-cost-climbing-stairs/description/
// 输入:[10,15,20]
// 输出:15

export function minCostClimbingStairs (cost: number[]): number {
  const n = cost.length
  let prev = 0
  let curr = 0
  let next = 0
  for (let i = 2; i <= n; i++) {
    next = Math.min(curr + cost[i - 1], prev + cost[i - 2])
    prev = curr
    curr = next
  }
  return curr
}

测试代码

ts
import { expect, test } from 'vitest'
import { minCostClimbingStairs } from './typescript.ts'
import { minCostClimbingStairs as minCostClimbingStairsJs } from './javascript.js'

test(`minCostClimbingStairs`, () => {
  expect(minCostClimbingStairs([10, 15, 20])).toBe(15)
  expect(minCostClimbingStairs([1, 100, 1, 1, 1, 100, 1, 1, 100, 1])).toBe(6)
})

test(`minCostClimbingStairsJs`, () => {
  expect(minCostClimbingStairsJs([10, 15, 20])).toBe(15)
  expect(minCostClimbingStairsJs([1, 100, 1, 1, 1, 100, 1, 1, 100, 1])).toBe(6)
})