Leetcode面试经典150题-134.加油站

news2024/9/23 1:29:26

 解法都在代码里,不懂就留言或者私信

class Solution {
    public int canCompleteCircuit(int[] gas, int[] cost) {
        /**如果只有一个加油站,那它本来就在那个为止,0就是它的编号?但是这只是你的想象,题目有个变态规定,自己到自己也得看油量。。。*/
        if(gas.length == 1) {
            return gas[0]>=cost[0]? 0 : -1;
        }
        /**如果大于1个就需要试一下某个点出发能到的最远距离,如果能经过n个点,那它就是良好出发点 */
        /**curIndex代表当前遍历的加油站的下标,我们从0开始试*/
        int curIndex = 0;
        int n = gas.length;
        while(curIndex < n) {
             /**gasSum表示当前累计的油量,尝试每个点开始的时候这个都重新设置为0*/
            int gasSum = 0;
            /**count用来统计走过的加油站,因为最终要走到自己才算,所以自己这个点记为0*/
            int count = 0;
            while(count < n) {
                /**下一个到的节点*/
                int nextIndex = (curIndex + count)%n;
                gasSum += (gas[nextIndex] - cost[nextIndex]);
                /**如果当前的油量到不了下一个加油站就确定不是良好的出发点 */
                if(gasSum < 0) {
                    break;
                }
                /**如果能到下个加油站,走过的加油站就又多了一个*/
                count ++;
            }
            /**如果从当前的加油站出发走过了n个加油站(从while条件判断退出的),当前就是良好出发点*/
            if(count == n) {
                return curIndex;
            }
            /**如果没有走过n个加油站(从if里的break退出的),那i到i+count都不可能,因为我是带着油来的到你这都过去不
            从你这更不可能,所以从i+count+1开始试,这里不要去做取余,因为取余的话会导致不准确,比如一共5个加油站,你从3走了三步
            确实是1,但是如果这里取1,你就又变成从1开始走了,其实从1开始走我们是走不通的,不然也不会尝试3,所以这里写了会变成死循环可能*/
            curIndex = curIndex+count+1;
        }
        /**中间没有发现能走完全程的就是没有,返回-1代表没有任何一个 */
        return -1;
       
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】进程控制(2)

3. 进程等待 1. 是什么 通过系统调用 wait/waitpid 对子进程的退出状态进行检测和回收的功能 2. 为什么 僵尸进程无法杀死&#xff0c;通过进程等待来杀掉它&#xff0c;进而解决内存泄漏的问题 &#xff08;一&#xff09;进程等待的方法 a. wait : 代码 wait : 等待任意一…

解锁SAP数据的潜力:SNP Glue与SAP Datasphere的协同作用

在各种文章中&#xff0c;我们研究了客户如何利用SNP Glue与基于云的数据仓库和数据湖相结合&#xff0c;以充分利用其SAP数据。SNP Glue 通过高性能集成解决方案帮助客户解锁 SAP 数据孤岛。例如&#xff0c;可以使用SNP Glue先进的增量捕获&#xff08;CDC&#xff09;近乎实…

【Linux 报错】Ubuntu 20.04.5 LTS报错:“E: Unable to locate package xx”

问题描述&#xff1a; 在使用 &#xff08;Ubuntu 20.04.5 LTS&#xff09;学习 Linux 时&#xff0c;想要安装 tree 命令&#xff0c;出现下面的报错&#xff1a; rootiZwz9asjf1ddlt6fy1ebqpZ:~# apt install tree Reading package lists... Done Building dependency tree…

蓝光3D扫描仪用于小尺寸精密注塑零件三维检测

在现代精密制造领域&#xff0c;微小型零件的加工和检测依然极具挑战。无论是微型机械零件、电子元器件&#xff0c;汽车注塑件&#xff0c;还是高端医疗器械部件&#xff0c;制造商都必须确保零件尺寸符合设计要求。传统的检测方法已无法满足日益严苛的要求&#xff0c;企业亟…

828华为云征文 | Flexus X的力量,驱动Halo博客在云端飞驰

前言 华为云Flexus云服务器 X实例&#xff0c;以卓越性能与灵活配置&#xff0c;为Halo博客搭建起梦想的云端舞台。在这个828企业上云节节日里&#xff0c;华为云Flexus云服务器 X实例不仅提供了稳定高效的运行环境&#xff0c;更助力Halo博客实现内容创作的无限可能。无论是流…

240912-通过Ollama实现网站知识总结

A. 最终效果 B. 准备工作 报错: USER_AGENT environment variable not set, consider setting it to identify your requests.-CSDN博客 C. 完整代码 # https://coreyclip.github.io/Ollama-Web-Summaries/import os os.environ[USER_AGENT] Mozilla/5.0 (Windows NT 10.…

docker安装部署Canal-监听mysql

文章目录 安装和配置Canal1.开启MySQL主从1.1.开启binlog1.2.设置用户权限 2.安装Canal2.1.创建网络2.3.安装Canal 遇到的问题 安装和配置Canal 下面我们就开启mysql的主从同步机制&#xff0c;让Canal来模拟salve 1.开启MySQL主从 Canal是基于MySQL的主从同步功能&#xff…

cheat:在终端中,在线查询Linux命令

cheat.sh 是一个命令查询网站&#xff0c;在终端中也能够使用。特点是返回简单易懂的代码示例和注解&#xff0c;可以帮助用户快速了解命令的使用方法。 ​​ 1.语法 curl cheat.sh/command2.示例 查询 ls 命令的用法 curl cheat.sh/ls查询 chmod 命令的用法 curl cheat.…

sqlite在Windows环境下安装、使用、node.js连接

sqlite在Windows环境下安装、使用、node.js连接 前言&#xff1a;2024年9月10日 1. 下载安装 sqlite 的安装非常简单 去官网下载对应压缩包 将两个压缩包解压&#xff0c;并将解压出来的文件放在同一目录下 将上面的目录路径配置到环境变量 path 中 2. 执行 sql sqlite …

Day7 | Java框架 | SpringMVC

Day7 | Java框架 | SpringMVC SpringMVC简介SpringMVC 概述入门案例入门案例工作流程分析Controller 加载控制与业务bean加载控制&#xff08;SpringMVC & Spring&#xff09;PostMan 请求与响应请求映射路径请求方式&#xff08;不同类型的请求参数&#xff09;&#xff1…

基于Linux文件编程实现处理Excel表格的数据

目录 前言 整体的代码框架 如何读取数据文件的数据 read_line 如何处理读取到的数据 process_data 运行结果 总结 前言 本文是基于Linux文件编程的一个小实验&#xff0c;用文件IO来读取Excel表格的数据&#xff0c;处理后写入另一个文件&#xff0c;本文只是对文件IO的…

一些硬件知识(二十二)

二极管&#xff08;Diode&#xff09;伏安特性、技术参数和项目中的应用 在正向偏置下&#xff0c;二极管呈现出良好的导电性能&#xff0c;可以允许电流通过&#xff1b;而在反向偏置下&#xff0c;二极管具有很高的阻断能力&#xff0c;几乎不允许电流通过。这是由构成二极管…

CC工具箱使用指南:【字段计算器学习版】

一、简介 这个工具算是Pro自带的字段计算器的扩展版。 工具预制了几种计算模式&#xff0c;通过可视化操作&#xff0c;帮你自动生成代码。 生成代码后&#xff0c;可以直接运行&#xff0c;也可以将代码复制到Pro自带的字段计算器中进行计算。 总之&#xff0c;这是给不会…

【CanMV K230 AI视觉】 人体检测

【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接&#xff1a;已做成合集 抖音链接&#xff1a;已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体&#xff0c;常用于人体数量检测&#xff0c;人流量监控以及安防监控等。…

研1日记9

1.理解conv1d和conv2d a. 1和2处理的数据不同&#xff0c;1维数据和图像 b. 例如x输入形状为(32,19,512)时&#xff0c;卷积公式是针对512的&#xff0c;而19应该变换为参数中指定的输出通道。 2.“SE块”&#xff08;Squeeze-and-Excitation Block&#xff09;它可以帮助模…

STM32-HAL库开发快速入门

注:本文主要记录一下STM32CubeMX软件的使用流程,记录内容以STM32外设&#xff08;中断、I2C、USART、SPI等配置&#xff09;在STM32CubeMX中的设置为主&#xff0c;对驱动代码编写不做记录&#xff0c;所以阅读本文最好有标准库开发经验。除第2节外&#xff0c;使用的都是韦东山…

鼠标hover过渡动画(已验证)

基于css中的grid方案实现的一个hover小动画&#xff0c;以下代码基于vue2&#xff0c;其他的可以直接复制html和css就可以&#xff0c;注意&#xff1a;以下代码在部分浏览器不兼容 注&#xff1a;部分代码来自我接入的GPT4o/Claude网站 <template><div class"h…

API安全测试 | Postman + BurpSuite 配置证书代理

img 在对使用基于证书的身份验证的 API进行安全你测试时&#xff0c;需要将证书添加到我们的工具&#xff08;如 Postman 和 Burp Suite&#xff09;中。这样我们才能够在客户端和服务器之间代理请求进行分析&#xff0c;以便评估 API 的安全性。 在本文我们将介绍将证书和私…

软硬链接 动静态库(深入地址空间)

文章目录 前言&#xff1a;软硬链接&#xff1a;动态库和静态库&#xff1a;如何制作静态库&#xff1f;如何制作动态库&#xff1f;动态库 VS 静态库 文本写入 && 二进制写入&#x1f680;动态库加载与可执行程序与地址空间的关系&#xff1a;&#x1f9db;‍♀️可执…

el-input设置type=‘number‘和v-model.number的区别

el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据&#xff0c;我们首先会想到typenumber&#xff0c;设置完type为number时会限制我们输入的内容只能为数字&#xff0c;不能为字符/汉字等非数字类型的数值&…