当前位置:网站首页>加油站(贪心)
加油站(贪心)
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
都看到这里了,下面的内容你懂得,让我们共同进步!
边栏推荐
- 栅格矢量数据的裁剪
- PostgreSQL surpasses MySQL
- Thread life cycle and its methods
- Regular matching numbers, English and English symbols
- Hundreds of lines of code to implement a JSON parser
- Four methods of thread termination
- 原生JS 实现页面元素的拖动 拖拽
- How to back up MySQL_ The most complete MySQL backup method in history
- Reading notes of Mr. toad going to see a psychologist
- [binary tree] the minimum string starting from the leaf node
猜你喜欢

欧拉恒等式:数学史上的真正完美公式!

Why can't Bert completely kill the BM25??

China Radio and television 5g package is coming, lower than the three major operators, but not as low as expected

Research and Simulation of chaotic digital image encryption technology based on MATLAB

基于asp.net的文献检索系统

Design artificial intelligence products: technical possibility, user acceptability and commercial feasibility

Source code analysis of ArrayList

Votre Code parle? (1)

【中移芯昇】5. spi接口测试tf卡

中国内地仅四家突围 联想智慧颐和园荣获 “2022年IDC亚太区智慧城市大奖”
随机推荐
The company leader said that if the personal code exceeds 10 bugs, he will be dismissed. What is the experience?
【二叉树】从叶结点开始的最小字符串
Only four breakthrough Lenovo smart Summer Palace in mainland China won the "IDC Asia Pacific Smart City Award in 2022"
What are the products of increased life insurance?
Hematemesis recommends 17 "wheels" to improve development efficiency
Other domestic mobile phones failed to fill the vacancy of Huawei, and apple has no rival in the high-end mobile phone market
药物发现新方法,阿斯利康团队通过课程学习改进从头分子设计
基于ASP的勤工俭学管理系统
Zhongang mining focuses on the fluorine chemical industry and lays out the new energy industry chain
Special test for cold and hot start of app
Is it safe to open an account on the flush
2022金属非金属矿山安全检查(地下矿山)复训题库及在线模拟考试
ArcGIS vector center point generates rectangle and cuts TIF image for deep learning sample training
30 sets of JSP website source code collection "suggestions collection"
《畅玩NAS》家庭 NAS 服务器搭建方案「建议收藏」
Deveco studio 3.0 editor configuration tips
i++ , ++i
G: maximum flow problem
Inftnews | technology giants accelerate their march into Web3 and metauniverse
What is the progress of China open source with 7.55 million developers?