[力扣题解]134. 加油站

题目:134. 加油站

思路

贪心法;

代码

暴力法

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int i, rest, index, size;size = gas.size();for(i = 0; i < size; i++){// 从 i 开始// 油量储备rest = gas[i] - cost[i];index = (i + 1) % size;// 有油且未到达终点while(rest > 0 && index != i){rest = rest + gas[index] - cost[index];index = (index + 1) % size;}if(rest >= 0 && index == i){return i;}}return -1;}
};

本题应该设置了时长限制,所以暴力法超时了;

贪心 Method 1

// 代码随想录: 贪心 Method 1
//
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int curSum = 0;int min = INT_MAX; // 从起点出发,邮箱里的油量最小值int i, rest;for(i = 0; i < gas.size(); i++){cout << "i : " << i;rest = gas[i] - cost[i]; // 这一天剩下的油curSum += rest;          // 现在的油cout << ", curSum : " << curSum;if(curSum < min){min = curSum;}}// 情况1:跑不了一圈if(curSum < 0){return -1;  }// 情况2:if(min >= 0){return 0;}for(i = gas.size()-1; i >= 0; i--){rest = gas[i] - cost[i];min += rest;if(min >= 0){return i;}}return -1;}
};

贪心 Method 2

// 贪心 Method 2
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int i;int totalsum = 0, cursum = 0, start = 0;for(i = 0; i < gas.size(); i++){cout << ", i : " << i;cursum += gas[i] - cost[i];totalsum += gas[i] - cost[i];cout << ", cursum : " << cursum;// 没油了, 重来if(cursum < 0){start = i+1; // 题目条件有“如果有解存在唯一解”cursum = 0;cout << ", start : " << start;}cout << endl;}// 没戏了if(totalsum < 0){return -1;}return start;}
};

看不懂代码的时候,就手动输出调试;(像上面那样)

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

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

相关文章

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明 最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务)&#xff0c;所以想着做一个负载均衡&#xff0c;然后多开一些服务&#xff0c;把配置写在nginx里面就好了。 一开始租用了一个3080起了一个服务&#xff0c;后来觉得速度不够快&#xff0c;再起了…

DOM 文档对象模型

一、DOM简介 1、什么是DOM DOM 文档对象模型简称&#xff0c;是W3C组织推荐的处理可扩展标记语言的标准编程接口 W3C已经定义了一系列的DOM接口&#xff0c;通过这些接口可以改变网页的内容、结构、样式 2、DOM树 DOM把以上内容都看做是对象 二、获取元素 获取页面元素&am…

day001 ~如何修改主机名

命令行方式设置主机名 # 这个很重要&#xff01;用命令改方便些 hostnamectl set-hostname ocloud-252 #查询&#xff0c;exit或logout重新登录后发现主机名换掉 hostname nmtui方式修改 nmtui 在工作中,如果机器很多,最好修改主机名做好标识不至于弄混,方便管理.

TensorFlow运行bug汇总

1、ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1 解决方案 pip install urllib31.26.15 -i https://pypi.tuna.tsinghua.edu.cn/simple 升级或者降级 (TF2.1) C:\Users\Administrator>pip install urllib31.26.15 -i https://pypi.tuna.tsinghua.edu.cn/sim…

LeetCode—用队列实现栈

一.题目 二.思路 1.后入先出的实现&#xff1a; 创建两个队列来实现栈&#xff08;后入先出&#xff09;&#xff1a; 两个队列&#xff0c;保持一个存数据&#xff0c;另一个为空&#xff0c;入数据&#xff08;push&#xff09;要入不为空的队列&#xff0c;&#xff08;p…

DDS块集是如何工作的?

DDS块集使你能够在Simulink中创建DDS应用程序。如果你有一个在Simulink中建模的应用程序&#xff0c;希望能够使用DDS&#xff0c;则可以使用DDS块集轻松连接到DDS中间件平台。 DDS块集将DDS概念引入Simulink环境&#xff0c;在Simulink应用程序中对这些概念进行建模&#xff0…

java实体类中,不对应数据库的实体类字段

TableField(exist false) 是 MyBatis Plus 中的注解&#xff0c;用于标记实体类中的字段是否映射到数据库表中的字段。在这个注解中&#xff0c;exist 属性默认为 true&#xff0c;表示该字段在数据库表中存在。而当设置为 false 时&#xff0c;表示该字段不会映射到数据库表中…

STM32串口通信入门

文章目录 一、串口协议和RS-232标准&#xff0c;以及RS232电平与TTL电平的区别1.串口通信协议2.RS-232标准3.RS232电平与TTL电平的区别4.USB/TTL转232“模块&#xff08;CH340芯片为例&#xff09; 二、补充实验&#xff08;一&#xff09;几个常见的库函数、结构体1.时钟配置函…

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代&#xff0c;数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形&#xff0c;我们能够更好地理解数据&#xff0c;挖掘其背后的信息。Pyecharts&#xff0c;作为一款基于Python的数据可视化库&#xff0c;凭借其丰富的图表类型…

代码随想录刷题笔记

目录 四数相加2&#xff08;Leetcode454&#xff09; 四数相加2&#xff08;Leetcode454&#xff09; public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {int cnt 0;Map<Integer,Integer> map new HashMap();/** 这一步用来存 数组1和数…

多模态EDA论文小记

论文地址 该论文主要改进点是&#xff1a;通过动态化局部搜索中每个集群大小&#xff0c;高斯和柯西分布共同产生个体。总的来说改进点不多&#xff0c;当然也可能是笔者还没发现。 局部搜索 划分集群 划分集群有两个策略分别是&#xff1a; 随机生成一个点作为中心点&…

MySQL表死锁查询语句

步骤1&#xff1a;查询表死锁的sql语句&#xff1a; SELECT * FROM information_schema.PROCESSLIST where length(info) >0 ; 或 SELECT * FROM information_schema.INNODB_TRX; 步骤2&#xff1a;删除 kill "对应的线程id"

Dockerfile 基本结构

Dockerfile 是一个文本文件&#xff0c;用于自动化 Docker 镜像的构建过程。这里是一个简单的 Dockerfile 编写步骤&#xff0c;以及一个基本的例子&#xff1a; Dockerfile 基本结构 FROM: 指定基础镜像。RUN: 执行命令。COPY / ADD: 复制文件或目录到镜像中。CMD: 设置容器…

【JVM】Class文件的格式

目录 概述 Class文件的格式 概述 Class文件是JVM的输入&#xff0c;Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础。 1:Class文件是一组以8字节为单位的字节流&#xff0c;各个数据项目按顺序紧凑排列 2:对于占用空间大于8字节的数据…

16 华三数据中心最流行的技术 M-LAG

STP和MTP&#xff08;第二十二课&#xff09;-CSDN博客 VRRP技术和浮动路由(第二十六课)_vrrp 浮动路由-CSDN博客 VRRP DHCP ACL NAT 网络核心路由技术综述 (第十课)-CSDN博客 04 交换机的IRF的配置-CSDN博客 1 M-LAG AI介绍 M-LAG&#xff08;Multi-Chassis Link Aggrega…

其他的 框架安全:Apache Solr 远程代码漏洞.(CVE-2019-0193)

什么是 Apache Solr Apache Solr是一个开源的搜索服务&#xff0c;便用Java语言开发&#xff0c;主要基于 HTTP 和ApacheLucene 实现的。Sor是一个高性能&#xff0c;采用Java5开发&#xff0c;基于Lucene的全文搜索服务器。 目录&#xff1a; 什么是 Apache Solr 生成的漏…

python设计模式-策略模式

from abc import abstractmethod,ABCclass BaseProcess(ABC):abstractmethoddef process_file(self,filepath):passclass ExcelProcess(BaseProcess):def process_file(self,filepath):print("处理excel 方法")class CsvProcess(BaseProcess):def process_file(self,…

java final关键字

在Java中,final 是一个关键字,用于表示一个最终变量、方法或类。它可以用于不同的上下文中,具有不同的含义: 1. 最终变量: 用 final 修饰的变量表示一个常量,一旦被赋值后就不能再改变。如果是基本数据类型,一旦赋值后就不能再更改其值。如果是引用类型,一旦引用被初…

基于yolov5+streamlit目标检测演示系统设计

YOLOv5与Streamlit&#xff1a;智能目标检测可视化展示介绍 随着人工智能技术的飞速发展&#xff0c;目标检测技术已成为推动智能化社会进步的关键技术之一。在众多目标检测算法中&#xff0c;YOLOv5以其卓越的性能和实时性&#xff0c;成为了业界的佼佼者。与此同时&#xff…

vben框架是什么

Vben是一个基于Vue3.0、Vite、Ant-Design-Vue、TypeScript的后台解决方案&#xff0c;目标是为开发中大型项目提供开箱即用的解决方案。它包括二次封装组件、utils、hooks、动态菜单、权限校验、按钮级别权限控制等功能。项目会使用前端较新的技术栈&#xff0c;可以作为项目的…