企业网站推广形式有,急招大龄工300元一天,服务网站备案,要怎么做网站动图根据题解 这道题使用贪心算法#xff0c;找到当前可解决问题的状态即可
「贪心算法」的问题需要满足的条件#xff1a;
最优子结构#xff1a;规模较大的问题的解由规模较小的子问题的解组成#xff0c;规模较大的问题的解只由其中一个规模较小的子问题的解决定#xff…根据题解 这道题使用贪心算法找到当前可解决问题的状态即可
「贪心算法」的问题需要满足的条件
最优子结构规模较大的问题的解由规模较小的子问题的解组成规模较大的问题的解只由其中一个规模较小的子问题的解决定无后效性后面阶段的求解不会修改前面阶段已经计算好的结果贪心选择性质从局部最优解可以得到全局最优解。
如果要求走一圈则总剩余油量total应该大于等于0 而在每个站点的时候当前剩余油量curr如果大于等于0代表可以到达下一个站点如果小于0代表从当前及之前的站点出发无法到达下一个站点于是出发点改为下一个站点。 为什么说当前及之前的站点出发都无法到达下一个站点呢 参考这个题解的图
可以看到假设start已经更改为3之后可以到达4假设到下一个节点时cursum变成了负数而在这之前的两个站点的cursum都是正数代表它俩的加和都不够更别提其中一个了 所以start会跳过4更新为i1。
class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {int n gas.size();int start 0;int curr 0;int total 0;for (int i 0; i n; i) {curr gas[i] - cost[i];total gas[i] - cost[i];if (curr 0) {start i 1;curr 0;}}return total 0 ? start : -1;}
};