当前位置: 首页 > 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;
}

相关文章:

LeertCode 134 加油站

题目&#xff1a; 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车&#xff0c;从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发&#xff0c;开始时油箱为空。给定两个整数数组 …...

python文件操作的基本流程

引入 程序运行过程中产生的数据会保存到内存中&#xff0c;如果想要永久保存下来&#xff0c;就必须将数据存放在硬盘上&#xff0c;应用程序如果想要操作计算机的硬件就必须通过操作系统&#xff0c;文件就是操作系统提供给应用程序来操作硬盘的虚拟概念&#xff0c;应用程序…...

1. 两数之和

原题链接&#xff1a; 1. 两数之和 https://leetcode.cn/problems/two-sum/ 完成情况&#xff1a; ##1. n 2 n^2 n2复杂度 2.HashMap进行优化 3.空间换时间方法 即&#xff0c;构建一个 1 0 − 9 10^-9 10−9 到 1 0 9 10^9 109这个大的数组&#xff0c;然后把数填进去&…...

操作系统:06 进程通信

1 基本概念 进程间通信是指两个或多个进程之间交互数据的过程&#xff0c;因为进程之间是相互独立的&#xff0c;为了协同工作必须进行进程间交互数据 2 进程间通信的分类 2.1 简单的进程间通信&#xff1a; 信号(携带附加数据)、文件、命令行参数、环境变量表 2.2 传统的进…...

WRF模式

随着生态文明建设和“碳中和”战略的持续推进&#xff0c;我国及全球气候变化及应对是政府、科学界及商业界关注的焦点。气候是多个领域&#xff08;生态、水资源、风资源及碳中和等问题&#xff09;的主要驱动因素&#xff0c;合理认知气候变化有利于解释生态环境变化机理及过…...

2直接连接的网络与VLAN划分【实验】【计算机网络】

2直接连接的网络与VLAN划分【实验】【计算机网络】 前言推荐2直接连接的网络与VLAN划分2.1共享式以太网和交换式以太网实验目的实验内容及实验环境实验原理共享式以太网交换式以太网 实验过程搭建实验环境初始化序训练操作共享式以太网-操作交换式以太网查看共享式以太网冲突查…...

【Linux0.11代码分析】04 之 head.s 启动流程

【Linux0.11代码分析】04 之 head.s 启动流程 一、boot/head.s 系列文章如下&#xff1a; 系列文章汇总&#xff1a;《【Linux0.11代码分析】之 系列文章链接汇总&#xff08;全&#xff09;》 . 1.《【Linux0.11代码分析】01 之 代码目录分析》 2.《【Linux0.11代码分析】02 之…...

自动化测试和selenium的使用

目录 自动化测试定义 为什么选择selenium来作为我们web自动化测试的工具&#xff1f; 自动化测试定位元素 使用cssSelector定位 使用XPath 定位 操作测试对象 模拟手动从键盘输入 点击对象 获取页面文本 清除对象输入的文本内容 添加等待&#xff08;三种方式&#…...

Ubuntu常用终端操作

终端快捷键 打开 Ctrlaltt:打开终端&#xff08;默认路径为家目录&#xff09; Ctrlshiftn&#xff1a;打开终端&#xff08;与当前终端处于同一路径下&#xff09; Ctrlshiftt:打开终端&#xff08;在大终端下面创建小终端&#xff09; alt数字 关闭 exitCtrld 窗口切换 …...

Spring Security 6.x 系列【34】认证篇之前后端分离场景下的集成方案

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. 案例演示2.1 未认证2.2 认证成功2.3 认证失败2.4 权限不足2.5 注…...

Qt之QTextToSpeech 让你的应用程序说话

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言QTextToSpeech基础使用1.创建一个QTextToSpeech对象2.朗读文字3.朗读文件和状态信息4.设置QTTS(QTextToSpeech)属性5.输出支持区域的设置列表、语言6.实现小数点朗读QTextToSpeech项目(练习)…...

为什么程序员喜欢用Linux?

Linux哪些行业在运用&#xff1f; Linux系统运用极其广泛&#xff0c;不少用户只知道windows&#xff0c;是因为&#xff0c;Linux的运用主要是在企业端。现在科技极其发达&#xff0c;我们手机在手&#xff0c;就能干很多事情&#xff0c;只需点一点屏幕&#xff0c;轻松完成…...

leetcode 598. 范围求和 II

题目描述解题思路执行结果 leetcode 598. 范围求和 II 题目描述 范围求和 II 给你一个 m x n 的矩阵 M &#xff0c;初始化时所有的 0 和一个操作数组 op &#xff0c;其中 ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该…...

javaweb前置知识

1.CSS CSS的角色&#xff1a;页面显示的美观风格CSS的基础语法&#xff1a;标签样式&#xff1b;类样式&#xff1b;ID样式&#xff1b;组合样式&#xff1b;嵌入式样式表&#xff1b;内部样式表&#xff1b;外部样式表盒子模型&#xff1a;border、margin、padding定位和浮动…...

基于微信小程序的酒店预定管理系统设计与实现

第1章 绪论 1 1.1开发背景与意义 1 1.2开发方法 1 1.3论文结构 1 2系统开发技术与环境 3 2.1 系统开发语言 3 2.2 系统开发工具 3 2.3 系统页面技术 3 2.4 系统数据库的选择 4 2.5 系统的运行环境 4 2.5.1 硬件环境 4 2.5.2 软件环境 4 3系统分析 5 3.1可行性分析 5 3.1.1 经济…...

26. Service——深入学习

本章讲解知识点 Service 会话保持机制Service 的多端口设置Service 支持的网络协议Kubernetes 的服务发现机制Headless ServiceEndpoint Slices这一节我们来讲讲 Service 更多细节 1. Service 会话保持机制 Service 支持通过设置 sessionAffinity 实现基于客户端 IP 的会话保…...

【算法】Check If Word Is Valid After Substitutions 检查替换后的词是否有效

文章目录 Check If Word Is Valid After Substitutions 检查替换后的词是否有效问题描述&#xff1a;分析代码 Tag Check If Word Is Valid After Substitutions 检查替换后的词是否有效 问题描述&#xff1a; 给你一个字符串 s &#xff0c;请你判断它是否 有效 。 字符串 s…...

基于jenkinsfile布置java工程

需求 通过jenkins发布java项目到服务器 预备环境 项目地址&#xff1a; https://gitee.com/asaland/sb-docker-appJenkins 2.387.3 通过Jenkinsfile实现方式 jenkins ui 配置pipeline 什么是pipeline? 直接看注释吧&#xff0c;简单点就是编排可以多个跨时间的构建代理…...

Spring JpaTransactionManager事务管理

首先&#xff0c;在做关于JpaTransactionManager之前&#xff0c;先对Jpa做一个简单的了解&#xff0c;他毕竟不如hibernate那么热门&#xff0c;其实二者很相识&#xff0c;只不过后期hibernate和JDO 版本都已经兼容了其Jpa&#xff0c;目前大家用的少了。 JPA全称Java Persi…...

全国职业院校技能大赛网络建设与运维赛项赛题(七)

全国职业院校技能大赛 网络建设与运维 赛题 (七)...

告别sudo!在Ubuntu 20.04桌面版上配置纯root账户登录的详细步骤与深度解析

告别sudo&#xff01;在Ubuntu 20.04桌面版上配置纯root账户登录的详细步骤与深度解析 在Linux桌面环境中&#xff0c;频繁输入sudo密码已成为许多开发者的日常烦恼。特别是当你在Ubuntu 20.04上进行系统级配置或调试某些图形界面工具时&#xff0c;权限问题常常打断工作流。本…...

AI驱动CD流水线性能跃迁:实测QPS提升3.8倍、部署失败率下降92.6%的5个核心改造点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生持续交付&#xff1a;2026奇点智能技术大会部署流水线优化 在2026奇点智能技术大会上&#xff0c;AI原生持续交付&#xff08;AI-Native CI/CD&#xff09;成为核心实践范式——它不再将AI模型视…...

Rust CLI工具bard-rs:终端直连Google Gemini并实时保存Markdown对话

1. 项目概述&#xff1a;一个Rust写的Google Gemini命令行工具 如果你和我一样&#xff0c;日常喜欢在终端里干活&#xff0c;同时又需要频繁地和Google Gemini&#xff08;以前叫Bard&#xff09;打交道&#xff0c;来回在浏览器和编辑器之间切换、复制粘贴对话内容&#xff…...

CANN/cann-recipes-train基于verl-retool的agent样例

基于verl-retool的agent样例 【免费下载链接】cann-recipes-train 本项目针对LLM与多模态模型训练业务中的典型模型、加速算法&#xff0c;提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-train 概述 本样例参考verl/recipe中的retool项…...

对比直连与通过Taotoken调用大模型的延迟与稳定性体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直连与通过Taotoken调用大模型的延迟与稳定性体验 在构建依赖大模型能力的应用时&#xff0c;开发者通常会面临一个选择&#…...

Godot Script IDE插件:GDScript开发效率革命,从编辑器到轻量IDE

1. 项目概述&#xff1a;从编辑器到IDE的进化如果你和我一样&#xff0c;长期使用Godot引擎进行开发&#xff0c;那么对内置的脚本编辑器一定又爱又恨。它简洁、轻量&#xff0c;启动飞快&#xff0c;但在处理大型项目、需要频繁在多个脚本间跳转、或者想快速定位一个特定变量或…...

AI Workspace:统一管理AI编程工具配置,解决团队协作“上下文孤岛”

1. 项目概述&#xff1a;AI Workspace 如何解决团队AI协作的“孤岛”问题如果你和你的团队已经开始在日常开发中重度依赖 Cursor、Claude Code 这类AI编程工具&#xff0c;那你大概率已经遇到了一个令人头疼的“上下文孤岛”问题。想象一下这个场景&#xff1a;你的前端项目里&…...

Linux下Cursor IDE自动化安装脚本:一键部署与桌面集成指南

1. 项目概述&#xff1a;一个为Linux用户定制的Cursor IDE自动化安装脚本 如果你和我一样&#xff0c;是一个长期在Linux环境下工作的开发者&#xff0c;那么对于“安装软件”这件事&#xff0c;可能已经形成了一套复杂的肌肉记忆&#xff1a;打开浏览器、找到官网、下载对应架…...

多智能体系统核心架构解析:从AutoGen到Shogun的“将军”模型实践

1. 项目概述&#xff1a;当“将军”指挥多个AI智能体最近在开源社区里&#xff0c;一个名为yohey-w/multi-agent-shogun的项目引起了我的注意。光看名字&#xff0c;“multi-agent”和“shogun”&#xff08;将军&#xff09;这两个词就足够让人浮想联翩。这显然不是一个简单的…...

从零构建智能代码解释器:LLM与沙箱的工程实践

1. 项目概述&#xff1a;当代码有了“思考”的能力最近在GitHub上看到一个挺有意思的项目&#xff0c;叫haseeb-heaven/code-interpreter。光看名字&#xff0c;你可能觉得这又是一个普通的代码执行工具&#xff0c;或者一个在线编程环境。但如果你点进去&#xff0c;花点时间研…...