Leetcode 134 加油站

题意理解

        给定n个站点,两个数组gas表达每个站点可加的油量,cost表达到下一站点所需耗费的油量。

        gas = [1,2,3,4,5], cost = [3,4,5,1,2]

        要求从下表为i的站点开始,刚好能支撑汽车在每个站点转一圈后回到出发位置。

        

解题思路

        当前站剩余油量累计-下一站耗油<0,行程被迫中止,前几站到到该站剩余的油量不足以支撑这几站的油量耗费,我们需要选择新的起始位置。

        此时我们选择当前站的下一站作为起始站,重新开始。

注意

        我们总是重复此过程。则不会出现到此处行程截止,但中间存在可完成行程的开始节点。

        

        假设

                位置2处截止,开往下一节点剩余油<0,但是存在位置1处开始到位置2,开往下一节点后剩余油>0,

        那么

                必然存在位置0->位置1,从位置1开往下一节点剩余油<0,

        因为

                我们总是在开往下一节点剩余油<0时,更换起始节点

        

                从位置0-位置2,不存在一个可开始的位置1,使位置1到位置2,开往下一节点剩余油>0。

        所以

                当开往下一节点剩余油<0时,将当前节点的下一个节点作为起始节点是合理的。   

        其次

                若所有站点油和<所有路程耗费,则说明任何一个节点开始都无法完成形成,返回下标-1.

1.贪心解题

public int canCompleteCircuit(int[] gas, int[] cost) {
        int start=0;
        int curGos=0;
        int totalGos=0;
        for(int i=0;i< gas.length;i++){
            //当起始位置到此处时,开往下一节点剩余油<0,行程截止
            if(curGos<0){
                //更换起始位置,重新开始计算
                curGos=0;
                start=i;
            }
            curGos+=(gas[i]-cost[i]);
            totalGos+=(gas[i]-cost[i]);//记录所有行程耗油剩余量
        }
        //若所有节点耗油剩余量<0,则从任何节点开始都走不完行程。
        if(totalGos<0) return -1;
        return  start;
    }

2.分析

时间复杂度:O(n)

空间复杂度:O(1)

n表示输入数组的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/263288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天锐绿盾加密系统是做什么用的?——防止公司内部核心文件数据 \ 资料外泄

天锐绿盾加密系统是一款专业的数据加密软件&#xff0c;主要用于保护企业数据的安全性和完整性。该系统采用先进的加密技术&#xff0c;对数据进行加密处理&#xff0c;确保数据在传输和存储过程中的安全性。 PC访问地址&#xff1a;www.drhchina.com 天锐绿盾加密系统的主要…

RocketMQ系统性学习-RocketMQ高级特性之消息存储在Broker的文件布局

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 【11来了】文章导读地址&#xff1a;点击查看文章导读&#xff01; &#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f341;&#x1f3…

【C语言】自定义类型:结构体深入解析(二)结构体内存对齐宏offsetof计算偏移量结构体传参

文章目录 &#x1f4dd;前言&#x1f320; 结构体内存对齐&#x1f309;内存对齐包含结构体的计算&#x1f320;宏offsetof计算偏移量&#x1f309;为什么存在内存对⻬?&#x1f320; 结构体传参&#x1f6a9;总结 &#x1f4dd;前言 本小节&#xff0c;我们学习结构的内存对…

Redis设计与实现之RDB

目录 一、RDB 1、保存 2、 SAVE 、BGSAVE 、AOF 写入和 BGREWRITEAOF SAVE BGSAVE 3、载入 4、RDB 文件结构 REDIS DB-DATA SELECT-DB KEY-VALUE-PAIRS EOF CHECK-SUM 二、 小结 一、RDB 在运行情况下&#xff0c;Redis 以数据结构的形式将数据维持在内存中&…

头歌—衍生密码体制

# 第1关&#xff1a;Rabin密码体制 题目描述 任务描述 Rabin密码体制是RSA密码体制的一种。 本关任务&#xff1a;使用Rabin密码体制对给定的明文进行加密。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;Rabin密码体制。 Rabin密码体制 在本关中&#x…

幻彩LED灯带芯片:SM16703SP单点单控 断点续传

幻彩LED灯带芯片SM16703SP3是一款单点单控断点续传的芯片&#xff0c;它采用了先进的技术&#xff0c;可以实现灯光的变化和控制。这款芯片不仅仅可以提供各种丰富多彩的灯光效果&#xff0c;还有断点续传功能&#xff0c; LED断点续传灯条采用了双信号线交叉传输的方案&#x…

【Spring Boot】面试题汇总,带答案的那种

继上次的文章【MySQL连环炮&#xff0c;你抗的住嘛&#xff1f;】爆火之后&#xff0c;越来越多的小伙伴后台留言&#xff0c;要求阿Q总结下其他的“连环炮”知识点&#xff0c;想在金九银十的面试黄金期轻松对线面试官。 同样为了节省大家的时间&#xff0c;阿Q最近对【Sprin…

链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)

上篇文章简述讲解了链表的基本概念并且实现了无头单向不循环链表&#xff1a;链接未来&#xff1a;深入理解链表数据结构&#xff08;一.c语言实现无头单向非循环链表&#xff09;-CSDN博客 那今天接着给大家带来带头双向循环链表的实现&#xff1a; 文章目录 一.项目文件规划…

在线商城系统软件源码与报价_OctShop

随着互联网、5G、人工智能的快速发展&#xff0c;人们在家购物已经是生活的重要方式。各种在线商城系统的不断涌现&#xff0c;同时&#xff0c;也给传统的企业商家销售带来了不小的压力&#xff0c;那么&#xff0c;如何调整&#xff0c;以适应时代的发展呢&#xff1f;经过不…

【数据结构和算法】最大连续1的个数 III

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四、…

世界第一!移动云刷新虚拟化性能测试世界纪录

近日&#xff0c;国际权威性能测评机构SPEC公布了最新一期虚拟化性能基准测试结果&#xff0c;移动云大云天元操作系统&#xff08;BC-Linux&#xff09;&#xff0c;凭借其出色的虚拟化性能&#xff0c;一举将世界纪录提升了10%&#xff0c;总分达到了8336分。 移动云SPEC vir…

Mybatis-plus动态条件查询QueryWrapper的函数用法

目录 前言1. QueryWrapper2. 函数3. Demo 前言 原本都是在Mapper文件中修改&#xff0c;直到看到项目中使用了QueryWrapper这个函数&#xff0c;大致了解了用法以及功能&#xff0c;发现还可以&#xff01; 对此此贴为科普帖以及笔记帖 1. QueryWrapper MyBatis-Plus 是 My…

Angular 进阶之五: Signals到底用不用?

Angular 在V16的时候推出了Signals&#xff0c;在17正式作为主打功能之一强烈推荐&#xff0c;看过了各种博主的各种科普文章也没说明白&#xff0c;到底这东西值不值得用&#xff1f;毕竟项目大了&#xff0c;重构代码也不是闹着玩儿的。各种科普文章主要在说两点&#xff1a;…

pake协议传输文件magic-wormhole

pake协议传输文件magic-wormhole 1 magic-wormhole简介其他介绍 2 安装magic-wormhole3 使用示范发送文件指定虫洞码长度 接收文件 1 magic-wormhole简介 16.7k star 强推&#xff0c;丝滑、简洁、安全的开源工具——magic-wormhole 项目地址&#xff1a;https://github.com/…

Android应用-flutter使用Positioned将控件定位到底部中间

文章目录 场景描述示例解释 场景描述 要将Positioned定位到屏幕底部中间的位置&#xff0c;你可以使用MediaQuery来获取屏幕的高度&#xff0c;然后设置Positioned的bottom属性和left或right属性&#xff0c;一般我们left和right都会设置一个值让控制置于合适的位置&#xff0…

Bert-vits2-2.3-Final,Bert-vits2最终版一键整合包(复刻生化危机艾达王)

近日&#xff0c;Bert-vits2发布了最新的版本2.3-final&#xff0c;意为最终版&#xff0c;修复了一些已知的bug&#xff0c;添加基于 WavLM 的 Discriminator&#xff08;来源于 StyleTTS2&#xff09;&#xff0c;令人意外的是&#xff0c;因情感控制效果不佳&#xff0c;去除…

【大模型】快速体验百度智能云千帆AppBuilder搭建知识库与小助手

文章目录 前言千帆AppBuilder什么是千帆AppBuilderAppBuilder能做什么 体验千帆AppBuilderJava知识库高考作文小助手 总结 前言 前天&#xff0c;在【百度智能云智算大会】上&#xff0c;百度智能云千帆AppBuilder正式开放服务。这是一个AI原生应用开发工作台&#xff0c;可以…

计算机网络:应用层

0 本节主要内容 问题描述 解决思路 1 问题描述 不同的网络服务&#xff1a; DNS&#xff1a;用来把人们使用的机器名字&#xff08;域名&#xff09;转换为 IP 地址&#xff1b;DHCP&#xff1a;允许一台计算机加入网络和获取 IP 地址&#xff0c;而不用手工配置&#xff1…

【DWJ_1703225514】基于Sklearn航空公司服务质量分析

【Talk is cheap】 # 导入库 import warnings warnings.filterwarnings(ignore)import pandas as pd import seaborn as sns import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False %matplotlib inlinefrom skl…

华为科技:辉煌发展、问题应对与未来战略

导言 作为全球领先的科技公司之一&#xff0c;华为经历了辉煌的发展历程。本文将深入探讨华为科技的发展过程、遇到的问题及解决过程、未来的可用范围&#xff0c;以及在各国的应用和未来的研究趋势。同时&#xff0c;分析在哪些领域华为能够取胜&#xff0c;以及在哪些方面发力…