贪心算法(11)(java)加油站

devtools/2025/3/29 22:20:32/

题目:在一条环路上有n个加油站,其中第i个加油站有汽油 gas[i]升.。
           你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1个加油站需要消耗汽油 cost[i]升。你从其中的一个加油站出发,开始时油箱为空。
           给定两个整数数组 gas 和 cost,如果你可以按顺而环招行驶一周,则返回出发时加油站的编号,否则返回-1。如果存在解,则保证它是唯一的.
示例1:
输入:gas = [1,2,3,4,5],cost = [3,4,5,1,2]

输出:3

解释:
从3号加油站(索引为3 处)出发,可获得4升汽油。此时油箱有 =0+4=4升汽油
开往 4号加油站,此时油箱有4-1+5=8升汽油

开往0号加油站,此时油箱有8-2+1=7升汽油

开往 1号加油站,此时油箱有7-3+2=6升汽油

开往 2 号加油站,此时油箱有6-4+3=5升汽油
开往 3号加油站,你需要消耗5升汽油,正好足够你返回到3号加油站。
因此 ,3可为起始索引。

解法1:暴力->枚举

1.依次枚举所有起点;

2.从起点开始,模拟一遍加油的流程即可

public class Solution1 {public int canCompleteCircuit(int[]gas,int[] cost){int n=gas.length;for(int i=0;i<n;i++)//依次枚举所有的起点{int rest=0;//统计净收益for(int step=0;step<n;step++)//枚举向后走的步数{int index=(i+step)%n;//走step不之后的下标rest=rest+gas[index]-cost[index];if(rest<0){break;}}if(rest>=0){return i;}}return -1;}public static void main(String[] args) {Solution1 solution1=new Solution1();int []gas={1,2,3,4,5};int []cost={3,4,5,1,2};System.out.println(solution1.canCompleteCircuit(gas,cost));}
}

解法2:贪心:时间复杂度O(n):

public class Solution2 {public int canCompleteCircuit(int[]gas,int[] cost){int n=gas.length;for(int i=0;i<n;i++)//依次枚举所有的起点{int rest=0;//统计净收益int step=0;for(;step<n;step++)//枚举向后走的步数{int index=(i+step)%n;//走step不之后的下标rest=rest+gas[index]-cost[index];if(rest<0){break;}}if(rest>=0){return i;}i=i+step;//贪心优化}return -1;}public static void main(String[] args) {Solution2 solution2=new Solution2();int []gas={1,2,3,4,5};int []cost={3,4,5,1,2};System.out.println(solution2.canCompleteCircuit(gas,cost));}}


http://www.ppmy.cn/devtools/171241.html

相关文章

Spring Security核心源码和功能实现

Spring Security 是一个强大的安全框架,用于保护基于 Spring 的应用程序。它提供了认证、授权、防止常见安全攻击等功能。下面是对 Spring Security 的核心功能和实现的详细分析,并使用 Mermaid 绘制相关流程图。 1. 核心功能 1.1 认证(Authentication) 用户认证:验证用…

【41】单片机编程核心技巧:const 与 code 的存储优化

【41】单片机编程核心技巧&#xff1a;const 与 code 的存储优化 七律 存储优化 常量存储ROM中&#xff0c;const与code异同。 变量常量分两域&#xff0c;RAM省空间有功。 查表阀值一键改&#xff0c;代码优化显神通。 单片机中精设计&#xff0c;资源管理更从容。 摘要 本…

A l密码学(Deepseek)

我&#xff1a;qwertyuiopasdfghjklzxcvbnm deepseek:深度思考中&#xff0e; Okay, lets see. The user input is "qwertyuiopasdfghjklzxcvbnm". At first glance, it looks like a jumbled sequence of letters with some spaces or maybe other characters in …

数据结构--堆

一&#xff0c;引言 堆作为一种特殊的二叉树类型有这很重要的实现意义&#xff0c;本文不详细堆的堆的感念性问题&#xff0c;注意进行讲解堆算法的实现。 由于堆为完全二叉树中间没有空隙&#xff0c;所以用数组来进行存储&#xff0c;以数组的下标来确认其二叉树各个节点的…

GitHub高级筛选小白使用手册

GitHub高级筛选小白使用手册 GitHub 提供了强大的搜索功能&#xff0c;允许用户通过高级筛选器来精确查找仓库、Issues、Pull Requests、代码等。下面是一些常用的高级筛选用法&#xff0c;帮助你更高效地使用 GitHub 搜索功能。 目录 搜索仓库搜索Issues搜索Pull Requests搜…

扩散语言模型:AI编程的未来

李升伟 整理 随着GPT-4等自回归Transformer模型为AI生成文本树立标杆&#xff0c;语言模型正在快速进化。如今&#xff0c;一类新型模型崭露头角&#xff1a;以Inception Labs的Mercury为代表的扩散语言模型。传统大语言模型&#xff08;LLM&#xff09;逐词生成文本&#xff…

如何将maltab开发的app嵌入PPT中展示并且可实时互动

最近研究了个很有意思的东西&#xff0c;在这个不求做的好&#xff0c;只求说得好的潮流下应该会很有用&#xff0c;分享给大家。 本文的需求是&#xff1a;在PPT中需要展示一段动画来表现模型的性能&#xff0c;但是用视频文件播放太死板&#xff0c;如果领导想要看不同条件下…

我又又又又又又又又更新了~~~纯手工编写C++画图,有注释~~~~~~

本次更新内容&#xff1a; 更改托盘图标&#xff0c;在桌面新建快捷方式 提前申明&#xff1a;如果运行不了&#xff0c;请到主页查看RedpandaDevc下载&#xff0c;若还是不行就卸了重装。 版本号&#xff1a;1.13.8 480行 //版本号 :v1.13.8 //最终归属权为作者(饼干帅成渣…