算法训练营Day30

#Java #回溯

开源学习资料

Feeling and experiences:

加油站:力扣题目链接

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。

你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。

给定两个整数数组 gascost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int curSum = 0;int totalSum = 0;int index = 0;for (int i = 0; i < gas.length; i++) {curSum += gas[i] - cost[i];totalSum += gas[i] - cost[i];if (curSum < 0) {index = (i + 1) % gas.length ; curSum = 0;}}if (totalSum < 0) return -1;return index;}
}


 for 循环遍历每个加油站。

对于每个站点:
更新 curSum 和 totalSum 以反映从当前加油站到下一个加油站的油量变化(考虑加油和消耗)。
如果 curSum 变成负数,表示无法从当前起始站点到达下一个加油站。因此,需要更新起始站点为下一个加油站,并重置 curSum 为 0。
 在循环结束后,检查 totalSum。如果 totalSum 小于 0,表示整个路线的油量总和不足以支持整个旅程,因此返回 -1。
如果 totalSum 大于等于 0,则存在至少一个有效的起始加油站。此时,index 存储的就是这样一个有效起始站点的索引。

分发糖果:力扣题目链接

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。

你需要按照以下要求,给这些孩子分发糖果:

  • 每个孩子至少分配到 1 个糖果。
  • 相邻两个孩子评分更高的孩子会获得更多的糖果。

请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目

class Solution {public int candy(int[] ratings) {int[] tmp = new int[ratings.length];for(int i=1;i<ratings.length;i++){if(ratings[i]>ratings[i-1]){tmp[i]=tmp[i-1]+1;}}for(int i=ratings.length-2;i>=0;i--){if(ratings[i]>ratings[i+1]){tmp[i]=Math.max(tmp[i],tmp[i+1]+1);}}int sum = ratings.length;for(int i=0;i<tmp.length;i++){sum+=tmp[i];}return sum;}
}

 1. 初始化:
• 创建一个与 ratings 数组相同长度的 tmp 数组,用于存储每个孩子应得的额外糖果数。
2. 从左至右遍历:
• 第一个 for 循环从左至右遍历 ratings 数组。对于每个孩子:
• 如果一个孩子的评分高于他左边邻近的孩子,那么他应得的糖果数至少比左边的孩子多一个。因此,更新 tmp[i] 为 tmp[i-1] + 1。
3. 从右至左遍历:
• 第二个 for 循环从右至左遍历 ratings 数组。这次检查的是每个孩子相对于右边邻近孩子的评分。
• 如果一个孩子的评分高于他右边邻近的孩子,那么他应得的糖果数至少比右边的孩子多一个。因此,更新 tmp[i] 为 Math.max(tmp[i], tmp[i+1] + 1),确保不会减少已经由左至右遍历时分配的糖果数。
4. 计算总糖果数:
• 初始化 sum 为 ratings.length,因为每个孩子至少得到一颗糖果。
• 通过第三个 for 循环遍历 tmp 数组,将所有额外的糖果数加到 sum 中。
5. 返回结果:
• 返回 sum,它代表了满足条件的最小糖果总数。

Finghting!
 

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

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

相关文章

24届春招实习必备技能(一)之MyBatis Plus入门实践详解

MyBatis Plus入门实践详解 一、什么是MyBatis Plus? MyBatis Plus简称MP&#xff0c;是mybatis的增强工具&#xff0c;旨在增强&#xff0c;不做改变。MyBatis Plus内置了内置通用 Mapper、通用 Service&#xff0c;仅仅通过少量配置即可实现单表大部分 CRUD 操作&#xff0…

【LMM 003】生物医学领域的垂直类大型多模态模型 LLaVA-Med

论文标题&#xff1a;LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 论文作者&#xff1a;Chunyuan Li∗, Cliff Wong∗, Sheng Zhang∗, Naoto Usuyama, Haotian Liu, Jianwei Yang Tristan Naumann, Hoifung Poon, Jianfeng Gao 作…

LeetCode二叉树路径和专题:最大路径和与路径总和计数的策略

目录 437. 路径总和 III 深度优先遍历 前缀和优化 124. 二叉树中的最大路径和 437. 路径总和 III 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xf…

简单FTP客户端软件开发——VMware安装Linux虚拟机(命令行版)

VMware安装包和Linux系统镜像&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1UwF4DT8hNXp_cV0NpSfTww?pwdxnoh 提取码&#xff1a;xnoh 这个学期做计网课程设计【简单FTP客户端软件开发】需要在Linux上配置 ftp服务器&#xff0c;故此用VMware安装了Linux虚拟机&…

<软考高项备考>《论文专题 - 39采购管理(3) 》

3 过程2-实施采购 3.1 问题 4W1H过程做什么获取卖方应答、选择卖方并授予合同的过程作用&#xff1a;选定合格卖方并签署关于货物或服务交付的法律协议。本过程的最后成果是签订的协议&#xff0c;包括正式合同。为什么做实际进行采购谁来做组织中的职能部门或项目经理什么时…

遭遇.360、.halo勒索病毒:应对.360、.halo勒索病毒的最佳方法

尊敬的读者&#xff1a; 在数字时代的今天&#xff0c;科技的飞速发展为我们的工作和生活带来了便捷&#xff0c;然而&#xff0c;与此同时&#xff0c;网络空间中的威胁也日益猖獗。其中之一的勒索病毒&#xff0c;如.360、.halo病毒&#xff0c;以其高度隐蔽和破坏性成为网络…

burpsuite模块介绍之compare

导语 Burp Comparer是Burp Suite中的一个工具&#xff0c;主要提供一个可视化的差异比对功能&#xff0c;可以用于分析比较两次数据之间的区别。它的应用场景包括但不限于&#xff1a; 枚举用户名过程中&#xff0c;对比分析登陆成功和失败时&#xff0c;服务器端反馈结果的区…

编程式导航传参

(通过js代码实现跳转) 按照path进行跳转 第一步&#xff1a; 在app.vue中(前提是规则已经配置好) <template><div id"app">App组件<button clicklogin>跳转</button><!--路由出口-将来匹配的组件渲染地方--><router-view>&l…

【嵌入式学习笔记-01】什么是UC,操作系统历史介绍,计算机系统分层,环境变量(PATH),错误

【嵌入式学习笔记】什么是UC&#xff0c;操作系统历史介绍&#xff0c;计算机系统分层&#xff0c;环境变量&#xff08;PATH&#xff09;&#xff0c;错误 文章目录 什么是UC?计算机系统分层什么是操作系统&#xff1f; 环境变量什么是环境变量&#xff1f;环境变量的添加&am…

一次降低进程IO延迟的性能优化实践——基于block层bfq调度器(下篇)

在上一篇《一次降低进程IO延迟的性能优化实践——基于block层bfq调度器》基础上&#xff0c;本文主要总结实现该IO性能优化过程遇到的 IO卡死、IO重复派发、内核crash等问题。 1&#xff1a;IO重复派发触发了crash 在初版代码编写完成后&#xff0c;启动fio测试cat读取文件&a…

简写英语单词

题目&#xff1a; 思路&#xff1a; 这段代码的主要思路是读取一个字符串&#xff0c;然后将其中每个单词的首字母大写输出。具体来说&#xff0c;程序首先使用 fgets 函数读取一个字符串&#xff0c;然后遍历该字符串中的每个字符。当程序遇到一个字母时&#xff0c;如果此时…

在Linux中进行ZooKeeper集群搭建

在公网IP为x.x.x.x、y.y.y.y和z.z.z.z并装有Alibaba Cloud Linux 3.2104 LTS 64位的服务器上进行zookeeper集群搭建&#xff0c;都安装server-jre-8u202-linux-x64和apache-zookeeper-3.9.1-bin。 环境准备&#xff08;三台服务器都一样&#xff09; 第一步&#xff0c;下载s…

基于图论的图像分割 python + PyQt5

数据结构大作业&#xff0c;基于图论中的最小生成树的图像分割。一个很古老的算法&#xff0c;精度远远不如深度学习算法&#xff0c;但是对于代码能力是一个很好的锻炼。 课设要求&#xff1a; &#xff08; 1 &#xff09;输入&#xff1a;图像&#xff08;例如教室场景图&a…

四、Spring IoC实践和应用(三种配置方式总结)

本章概要 三种配置方式总结 XML方式配置总结XML注解方式配置总结完全注解方式配置总结 整合Spring5-Test5搭建测试环境 4.5 三种配置方式总结 4.5.1 XML方式配置总结 所有内容写到xml格式配置文件中声明bean通过<bean标签<bean标签包含基本信息&#xff08;id,class&…

字符串拼接 (90%用例)C卷 (JavaPythonNode.jsC++)

给定M(0<M<=30)个字符 (a-z),从中取出任意字符 (每个字符只能用一次)拼接成长度为N(0<N<=5)的字符串,要求相同的字符不能相邻,计算出给定的字符列表能拼接出多少种满足条件的字符串,输入非法或者无法拼接出满足条件的字符串则返回0。 输入描述 给定的字符列表…

47、激活函数 - sigmoid

今天在看一个比较常见的激活函数,叫作 sigmoid 激活函数,它的数学表达式为: 其中,x 为输入,画出图来看更直观一些。 Sigmoid 函数的图像看起来像一个 S 形曲线,我们先分析一下这个函数的特点。 Sigmoid 函数的输出范围在 (0, 1) 之间,并且不等于0或1。 Sigmoid 很明显是…

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…

客户端和驱动程序

今天我们来聊聊数据库领域中经常出现的两个术语&#xff1a;客户端和驱动程序。 客户端和驱动程序 客户端&#xff1a; 通常是指使用数据库服务的应用程序或工具。这可能是一个图形用户界面(GUI)工具、命令行工具、Web应用程序或其他形式的应用程序。客户端负责发起数据库请…

spring 之 事务

1、JdbcTemplate Spring 框架对 JDBC 进行封装&#xff0c;使用 JdbcTemplate 方便实现对数据库操作 1.1 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependency&…

基于SpringBoot的在线互动学习网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的在线互动学习网站,java…