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

面试经典 150 题 14 —(数组 / 字符串)— 134. 加油站

134. 加油站

在这里插入图片描述

方法一
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int minSpare = std::numeric_limits<int>::max(); // 初始化最小剩余汽油量为整型的最大值int spare = 0; // 当前剩余汽油量int len = gas.size(); // 数组长度int index = 0; // 起始加油站下标for (int i = 0; i < len; i++) {spare += gas[i] - cost[i]; // 更新剩余汽油量,加油量减去消耗量if (spare < minSpare) { // 若当前剩余汽油量小于最小剩余汽油量minSpare = spare; // 更新最小剩余汽油量index = i; // 更新起始加油站下标}}if (spare < 0) return -1; // 如果总剩余汽油量小于零,则无法走完一圈,返回-1/*有一个存在不是唯一解的测试案例跑不通了。所以要添加一个判断,如果遍历后的 minSpare > 0,表示所有情况都是满足的,直接返回 0。*/if (minSpare >= 0) return 0; // 如果最小剩余汽油量大于等于零,则从起始加油站开始能够走完一圈,返回0return (index + 1) % len; // 返回起始加油站下标加1除以数组长度的余数,表示从该加油站开始能够走完一圈}
};
方法二
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int length = gas.size();vector<int> dValue(length);for(int i = 0; i < length; i++){dValue[i] = gas[i] - cost[i];}int start = 0;while(start < length){int curSum = 0, count = 0;while(count < length){curSum += dValue[(start+count)%length];if(curSum < 0 ){break;}count++;}if(count == length){return start;}else{start = start + count + 1;}}return -1;}
};
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int length = gas.size(), start = 0;while(start < length){int curSum = 0, count = 0;while(count < length){curSum = curSum + gas[(start+count)%length] - cost[(start+count)%length];if(curSum < 0){break;}count++;}if(count == length){return start;}else{start = start + count + 1;}}return -1;}
};
http://www.lryc.cn/news/188190.html

相关文章:

  • 如何设计一个安全的对外接口?
  • 模拟pdf运行js脚本触发xss攻击及防攻击
  • 【数据结构】树和二叉树概念及其结构
  • 刘京城:我的《软件方法》学习经历(有彩蛋)
  • 浏览器详解(四) 渲染
  • idea新建一个module时,文件夹显示灰色/pom.xml文件显示灰色且中间有条横线
  • NoSQL数据库(林子雨慕课课程)
  • 模拟器运行在AndroidStudio内部,设置其独立窗口显示
  • 计算机网络 | 体系结构
  • ELK 处理 SpringCloud 日志
  • mac使用python递归删除文件夹下所有的.DS_Store文件
  • Gitlab+Jenkins自动化部署,解放双手
  • NNDL:作业3
  • dockers --cap-add 哪些值可以设置
  • golang常用库之-HTTP客户端请求库 grequests
  • 17基于matlab卡尔曼滤波的行人跟踪算法,并给出算法估计误差结果,判断算法的跟踪精确性,程序已调通,可直接运行,基于MATLAB平台,可直接拍下。
  • SpringCloud之Stream框架集成RocketMQ消息中间件
  • 与创新者同行!Apache Doris 首届线下峰会即将开启,最新议程公开!|即刻预约
  • vue解决:Parsing error: No Babel config file detected for ....
  • 算法题:K 次取反后最大化的数组和(典型的贪心算法问题)
  • Go语言中向[]byte数组中增加一个元素
  • CSS 布局案例: 2行、多行每行格数不定,最后一列对齐
  • 数据结构--算法、数据结构的基本概念
  • Edge浏览器下载文件被保存为 .crdownload 文件的问题小记
  • 6-10 单链表分段逆转 分数 15
  • 【单片机】17-温度传感器DS18B20
  • 力扣 -- 5. 最长回文子串
  • SpringCloud源码探析(十)-Web消息推送
  • Vue、React和小程序中的组件通信:父传子和子传父
  • 安卓玩机----展讯芯片机型解锁 读写分区工具 操作步骤解析