怎么证明 LeetCode 134 Gas Station 这个算法的正确性?

2022-09-07 11:18:18 +08:00
 JasonLaw

对于Gas Station - LeetCode,我也想到了跟 NeetCode 同样的算法,但是我不知道怎么证明算法的正确性。

我有以下疑问:

  1. 为什么 sum(gas) >= sum(cost)就表示一定存在那个 starting index ?
  2. 怎么证明要找的 starting index 就是 total 一直大于 0 的起点?
956 次点击
所在节点    程序员
3 条回复
MoYi123
2022-09-07 11:55:58 +08:00
简单说一下具体是怎么样的算法吧, 不然我还要去看个 15 分钟的视频.
JasonLaw
2022-09-07 12:02:01 +08:00
@MoYi123 #1 我希望帮助的人去看一下视频的,这样子才能真正理解那个算法,所以没有贴出代码。

不过还是谢谢啦。
jdz
2022-09-07 15:14:03 +08:00
考虑一个数组[a, b, c, d...] 有正有负, 加起来为正数, 与加油站油量 - 消耗量对应. 所以该数组正数对应 加油站油量大于消耗量.
由于数组为正, 必然存在一个最大子数组和为正, 最大子数组左边(如果存在) 连续的数的和必然为小于等于 0, 同理右边 反证法很容易.
以上想清楚了, 一切就很轻松理解了
核心既是 `最大子数组的左边 连续子数组必然小于等于 0, 右边同理`

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878308

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX