Skip to content

134. 加油站 ​

  • 题号:134
  • 来源:LeetCode
  • 难度:中等
  • 标签:模拟 数组
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n^2) 时间 · O(1) 空间 · 更新于 2026-09-27

枚举每个起点逐站模拟油量,暴力判定

typescript
/**
 * @difficulty medium
 * @tags 模拟,数组
 * @time O(n^2)
 * @space O(1)
 * @note 枚举每个起点逐站模拟油量,暴力判定
 * @134. 加油站
 */

let gas: number[] = [5, 1, 2, 3, 4]
let cost: number[] = [4, 4, 1, 5, 1]
let l = gas.length
// 保证解是唯一的。。
let start: number[] = [] // 有效起点
for (let i = 0; i < l; i++) {
    if (gas[i] >= cost[i]) {
        start.push(i)
    }
}
if (start === null) {
    console.log(-1)
}

console.log(start)
for (let i = 0; i < start.length; i++) {
    let car_oil = 0  // start[0]=3,[1]=4
    let disable = false


    if (start[i] === 0) {
        console.log("start:0")

        for (let m = 0; m < l; m++) {
            if (m === 0) {
                car_oil = gas[m]
            } else if (m === l - 1) {
                car_oil = car_oil - cost[l - 1]
            }
            else {
                car_oil = car_oil + gas[m] - cost[m - 1]
            }
            console.log("当前油量:", car_oil)
            if (car_oil < 0) {
                disable = true //油量耗尽 
                break
            }
        }
        if (disable) {
            continue
        } else {
            //console.log("start:0,当前油量:",car_oil)
            console.log(start[i])
        }

    } else {


        for (let m = start[i]; m < l; m++) {
            if (m === start[i]) {
                car_oil = gas[m]
            } else {
                car_oil = car_oil + gas[m] - cost[m - 1]
            }
            if (car_oil < 0) {
                disable = true
                break
            }
        }

        if (disable) {
            continue
        }

        for (let n = 0; n <= start[i]; n++) {

            if (n === 0) {
                car_oil = car_oil + gas[n] - cost[l - 1]
            } else if (n === start[i]) {
                car_oil = car_oil - cost[n - 1]
            } else {
                car_oil = car_oil + gas[n] - cost[n - 1]
            }

            if (car_oil < 0) {
                disable = true
                break
            }

        }

        if (disable) {
            continue
        } else {
            console.log(i)
        }
    }


}

源码:ts/leetcode/134. 加油站.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm