当前位置:网站首页>加油站(贪心)
加油站(贪心)
2022-06-28 14:09:00 【华为云】
title: 加油站(贪心)
date: 2022-04-29 14:43:09
categories: LeetCode
tags:
- 贪心
- 每天进步一点点系列
题目
难度 中等
在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。
示例 1:
输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
输出: 3
解释:
从 3 号加油站(索引为 3 处)出发,可获得 4 升汽油。此时油箱有 = 0 + 4 = 4 升汽油
开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油
开往 0 号加油站,此时油箱有 8 - 2 + 1 = 7 升汽油
开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油
开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油
开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。
因此,3 可为起始索引。
示例 2:
输入: gas = [2,3,4], cost = [3,4,3]
输出: -1解释:
你不能从 0 号或 1 号加油站出发,因为没有足够的汽油可以让你行驶到下一个加油站。
我们从 2 号加油站出发,可以获得 4 升汽油。 此时油箱有 = 0 + 4 = 4 升汽油
开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油
开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。
因此,无论怎样,你都不可能绕环路行驶一周。
提示:gas.length == n
cost.length == n
1 <= n <= 105
0 <= gas[i], cost[i] <= 104
代码:
class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { //先排除特殊情况 if(gas == null || cost == null || gas.length == 0 || cost.length == 0){ return -1; } if(gas.length == 1 && cost[0]== gas[0]){ return 0; } //剩余的数组 int[] last = new int[gas.length]; //起点的可能位置列表 List<Integer> list = new ArrayList<>(); int sum = 0; for (int i = 0; i < gas.length; i++) { last[i] = gas[i] - cost[i]; sum+=last[i]; if(last[i]>0){ list.add(i); } } //不可能跑一圈 if(sum<0){ return -1; } int res = -1; //遍历所有的可能节点 for (Integer i : list) { boolean[] flag = new boolean[gas.length]; flag[i] = true; int curr = i; int j=0; sum = last[curr]; //跑圈 for(j=0;j<gas.length;j++){ int next = curr+1==gas.length?0:curr+1; sum +=last[next]; //油不够了 if(sum < 0){ break; } curr = curr+1==gas.length?0:curr+1; } //可以跑一圈 if(j==gas.length){ return i; } } return res; }}精简代码:
class Solution { public int canCompleteCircuit(int[] gas, int[] cost) { int start = 0, sum = 0, tank = 0; for (int i = 0; i < gas.length; i++) { tank += gas[i] - cost[i]; if (tank < 0) { start = i + 1; sum += tank; tank = 0; } } return sum + tank >= 0 ? start : -1; }}以上就是加油站(贪心)【LeetCode】的全部内容
版权声明:keafmd
原创博主:牛哄哄的柯南
博主原文链接:https://keafmd.blog.csdn.net/
个人博客链接:https://www.keafmd.top/
看完如果对你有帮助,感谢点击下面的==一键三连==支持!
[哈哈][抱拳]

加油!
共同努力!
Keafmd
都看到这里了,下面的内容你懂得,让我们共同进步!
边栏推荐
- CVPR disputes again: IBM's Chinese draft papers were accused of copying idea, who won the second place in the competition
- GPS数据格式的分析与处理[通俗易懂]
- @ControllerAdvice + @ExceptionHandler 全局处理 Controller 层异常
- 【中移芯昇】5. spi接口测试tf卡
- Template_ Large integer multiplication
- Navicat Premium 16 永久破解激活工具及安装教程(亲测可用)
- Is it safe to open an account on the flush
- RSLO:自监督激光雷达里程计(实时+高精度,ICRA2022)
- [understanding of opportunity -32]: Guiguzi - Dui [x ī] Five attitudes towards danger and problems
- 栅格矢量数据的裁剪
猜你喜欢

一个bug肝一周...忍不住提了issue

中国内地仅四家突围 联想智慧颐和园荣获 “2022年IDC亚太区智慧城市大奖”

Thread life cycle and its methods

Why can't Bert completely kill the BM25??

PCB懂王,你是吗?我不是

sort

Other domestic mobile phones failed to fill the vacancy of Huawei, and apple has no rival in the high-end mobile phone market

If a programmer goes to prison, will he be assigned to write code?

你的代碼會說話嗎?(上)

《蛤蟆先生去看心里医生》阅读笔记
随机推荐
PC博物馆-熟悉又陌生的懵懂年代
Luogu_ P1303 A*B Problem_ High precision calculation
NPOI导出Excel并下载到客户端
中国内地仅四家突围 联想智慧颐和园荣获 “2022年IDC亚太区智慧城市大奖”
Four methods of thread termination
What are the products of increased life insurance?
Idea global search shortcut settings
Black apple installation tutorial OC boot "suggestions collection"
PC Museum - familiar and strange ignorant age
2022金属非金属矿山(地下矿山)主要负责人考试模拟100题模拟考试平台操作
设计一个有getMin功能的栈
n-queens problem
2022下半年软考考试时间安排已确定!
Nature | mapping the interaction map of plant foliar flora to establish genotype phenotype relationship
Votre Code parle? (1)
力扣解法汇总522-最长特殊序列 II
Navicat premium 16 permanent crack activation tool and installation tutorial (available for personal test)
Embedded design and development project - liquid level detection and alarm system
Npoi export excel and download to client
Ruijie switch configuration SSH password login command [easy to understand]