当前位置: 首页 > news >正文

LeertCode 134 加油站

题目: 在一条环路上有 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减去需要花费的cost,得到各站的总和后,判断是否>=0,如果不满足条件,直接返回-1。如果可以找到一条循环的路,那么进入循环,在循环中,每次的gas-cost加上经过上一个站剩下的,如果小于0,说明到不了下一站了。那么就要换新的索引了,新的索引就是i+1,又重新开始看能不能循环,并且将cursum赋值为0。

class Solution {
public:int Greed(vector<int>& gas, vector<int>& cost) {int totalsum = 0;int cursum = 0;int index = 0;for (int i = 0; i < gas.size();i++) {totalsum += (gas[i]-cost[i]);}if (totalsum < 0)return -1;for (int i = 0; i < gas.size(); i++) {cursum += (gas[i] - cost[i]);if (cursum < 0) {index = i + 1;cursum = 0;}}return index;}
};int main() {vector<int> gas = { 1, 2, 3, 4, 5 };vector<int> cost = { 3, 4, 5, 1, 2 };Solution ss;cout << ss.Greed(gas, cost) << endl;return 0;
}
http://www.lryc.cn/news/65746.html

相关文章:

  • python文件操作的基本流程
  • 1. 两数之和
  • 操作系统:06 进程通信
  • WRF模式
  • 2直接连接的网络与VLAN划分【实验】【计算机网络】
  • 【Linux0.11代码分析】04 之 head.s 启动流程
  • 自动化测试和selenium的使用
  • Ubuntu常用终端操作
  • Spring Security 6.x 系列【34】认证篇之前后端分离场景下的集成方案
  • Qt之QTextToSpeech 让你的应用程序说话
  • 为什么程序员喜欢用Linux?
  • leetcode 598. 范围求和 II
  • javaweb前置知识
  • 基于微信小程序的酒店预定管理系统设计与实现
  • 26. Service——深入学习
  • 【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效
  • 基于jenkinsfile布置java工程
  • Spring JpaTransactionManager事务管理
  • 全国职业院校技能大赛网络建设与运维赛项赛题(七)
  • asp.net+sqlserver企业公司进销存管理系统
  • WxGL应用实例:绘制点云
  • 一个月内面了30家公司,薪资从18K变成28K,真行啊····
  • 《计算机网络——自顶向下方法》精炼——1.4到1.7
  • 消息队列 (Message Queue)
  • JavaScript原型链污染学习记录
  • 顶级白帽黑客必备的十大黑客技术
  • 【关于认证鉴权一些概念梳理】
  • 16.网络爬虫—字体反爬(实战演示)
  • BOM概述
  • 3.Docker实用技术