博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(贪心)加油站绕圈问题
阅读量:4601 次
发布时间:2019-06-09

本文共 1112 字,大约阅读时间需要 3 分钟。

  • 题目:https://www.nowcoder.com/practice/3b1abd8ba2e54452b6e18b31780b3635?tpId=46&tqId=29046&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking
  • 翻译一下题目:题目的意思是开一辆加油车,绕着多个加油站走一圈,最终回到原点。每个加油站的加油量gas[i],到达下一个加油站花费的油量cost[i],从这些环形的加油站中找到一个加油站的位置能够绕一圈。假定只有一个位置符合题目要求。如果不存在就返回-1;
  • 思路:这个问题我们可以想到有两个问题需要解决。
    • ①:是否可以绕所有加油站一圈,也就是是否存在这么一个起始位置。这个问题只要一个循环就能解决。计算总共油量的差值即可 total+=gas[i] - cost[i];
    • ②:找到那个符合要求的起始位置。这个问题我们可以利用贪心算法。设置一个存储变量costs。随机的从第一个位置出发,sum +=gas[i] - cost[i];当找到某个位置sum<0,表示前面的所有加油站都是不符合要求的,将sum置为0,从当前位置继续查找,待一次循环结束之后,位置便找到了。
  • 代码
    class Solution {public:    int canCompleteCircuit(vector
    &gas, vector
    &cost) { //这个题目有两个问题需要解决 //①:加油车是否能够走完一圈:一次循环把花费的汽油和加入的汽油进行加减,如果大于0可以,否则不可以。 //②:在哪个位置起始能够走完一圈:对每一个加油站设置一个变量diff,cost(路上总共花费的)-gas(已经有的) = diff。如果每个站点的diff都是 //costs表示每一个经过每个加油站剩余的油,当油不足以到达下一个加油站的时候,从当前加油站重新计算。前面的加油站都不符合要求 //total表示总共的经过所有加油站剩余的油 int costs = 0; int index = -1; int total = 0; int distance = gas.size(); for (int i=0; i

     

转载于:https://www.cnblogs.com/Kobe10/p/6351310.html

你可能感兴趣的文章
CSS Reset CSS Framework
查看>>
LeetCode算法扫题系列19
查看>>
nginx获取经过层层代理后的客户端真实IP(使用正则匹配)
查看>>
YII实现dropDownList 联动事件
查看>>
为什么JavaScript里面0.1+0.2 === 0.3是false
查看>>
docker swarm集群搭建
查看>>
BZOJ 1303: [CQOI2009]中位数图 问题转化_扫描_思维
查看>>
SP1026 FAVDICE - Favorite Dice 数学期望
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
【矩阵+十进制快速幂】[NOI2013]矩阵游戏
查看>>
Java一个简单的文件工具集
查看>>
蓝牙BLE扫描成功,log中打印出扫描到的设备
查看>>
React(v16.8.4)生命周期详解
查看>>
一般处理应用页中绑定方法代码段
查看>>
React组件Components的两种表示方式
查看>>
无限鼠标没反应了
查看>>
CSU - 1356 Catch(dfs染色两种写法,和hdu4751比较)
查看>>
zabbix监控php-fpm的性能
查看>>
温故知新 div + css笔记
查看>>
针对降质模型中的模糊SR
查看>>