本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
前言
有一种算法叫“贪心”,“贪心”又可叫做“贪婪”,贪得的欲望,从字面意思上不难理解这种算法求解目的就是贪心的,为什么这么说,因为这种算法求解问题的实质就是每次的选择总是最优的,就好比去菜市场买菜或者买水果,在购买的时候,总是会挑选从自身角度来说最绿色,最新鲜的。
贪心算法便是这样的一个算法范例,但是就这样的一个算法求解出来的问题就是得到最优解了吗,当然并不是,这种算法它遵循的规则是在每个阶段做出局部的最优选择,并没有考虑全局的最优解答。
问题描述
在一条环路上有N个加油站,其中第i个加油站有汽油gas[i]升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
示例1:
输入:gas = [1,2,3,4,5]
cost = [3,4,5,1,2]
输出:3