day29 135. 分发糖果134. 加油站1005. K 次取反后最大化的数组和

news/2025/2/21 18:42:21/文章来源:https://www.cnblogs.com/lin0304/p/18729824
    1. 分发糖果
      问题描述
      根据孩子们的评分分发糖果,要求:
      每个孩子至少得到一颗糖果。
      如果一个孩子的评分比相邻孩子高,则他必须比相邻孩子得到更多糖果。
      解题思路
      两次遍历:
      从左到右:如果右边孩子的评分比左边高,则右边孩子至少比左边孩子多一颗糖果。
      从右到左:如果左边孩子的评分比右边高,则左边孩子的糖果数需要更新为右边孩子的糖果数加一(取最大值,避免覆盖)。
      计算总糖果数:将所有孩子的糖果数相加。
点击查看代码
//135. 分发糖果public int candy(int[] ratings) {int[] nums = new int[ratings.length];for (int i = 0; i < ratings.length-1; i++) {if (ratings[i] < ratings[i+1]) {nums[i+1] = nums[i] + 1;}}for (int i = ratings.length - 1; i > 0; i--) {if (ratings[i-1]> ratings[i]) {nums[i-1] = Math.max(nums[i] + 1,nums[i-1]);//不能把原来的值改小了}}int sum = ratings.length;for (int num : nums) {sum += num;}return sum;}
    1. 加油站
      问题描述
      给定两个数组 gas 和 cost,分别表示每个加油站的油量和从当前加油站到下一个加油站所需的油量。目标是找到一个起点,使得汽车可以绕一圈回到起点。
      解题思路
      贪心算法:
      如果从某个加油站出发,油量在中途变为负数,则说明从这个加油站到当前加油站之间的所有加油站都无法作为起点。
      更新起点为下一个加油站,并重置当前油量。
      总油量判断:
      如果总油量小于总消耗量,则无法完成一圈。
点击查看代码
//134. 加油站public int canCompleteCircuit(int[] gas, int[] cost) {//暴力算法,超时/*for (int i = 0; i < gas.length; i++) {int sum=0;int j =i;while (true){sum+=gas[j];sum-=cost[j];if (sum<0) break;j=++j%gas.length;if (j==i) return i;}}return -1;*/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){//意味着前面的加油站都不能抵达i+1号加油站index=i+1;curSum=0;}}if (totalSum<0){//总的差值和小于0,不可能有解return -1;}return index;}
    1. K 次取反后最大化的数组和
      问题描述
      给定一个数组和一个整数 k,可以对数组中的任意元素取反 k 次,目标是使数组的和最大。
      解题思路
      优先处理负数:
      先对数组排序,从最小的负数开始取反,直到 k 用完或没有负数。
      处理剩余的 k:
      如果 k 为奇数,说明还需要取反一次,此时取反数组中绝对值最小的元素。
      如果 k 为偶数,取反偶数次对数组和无影响。
点击查看代码
//1005. K 次取反后最大化的数组和public int largestSumAfterKNegations(int[] nums, int k) {//每次找到最小值取反 6ms/*while (k>0) {int min = 0;for (int i = 1; i < nums.length; i++) {if (nums[i]<nums[min]) min=i;}nums[min] = -nums[min];k--;}int sum = 0;for (int num : nums) {sum+=num;}return sum;*///2msArrays.sort(nums);for (int i = 0; i < nums.length&&k>0; i++) {//先处理所有负数,从小到大处理if (nums[i]<0) {nums[i] = -nums[i];k--;}}if (k%2==1){//如果k为奇数,则继续处理最小值(k为偶数的时候对整体没影响)1次Arrays.sort(nums);nums[0] = -nums[0];}int sum = 0;for (int num : nums) {sum+=num;}return sum;}

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

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

相关文章

利用deepseek,体验ai写代码

vscode利用cline接入火山引擎deepseek,免费体验ai写代码。注册火山引擎,开通deepseek服务进行火山引擎官网https://www.volcengine.com/,进行注册。进入控制台,访问火山方舟在左侧下拉菜单选择开通管理,开通模型,由于我已经开通过R1模型,以DeepSeek-R1-Distill-Qwen-32B…

测试用例编写

模板1:模板2:模板3:二、用例的来源(1)公司就有模板(2)自己设计模板(3)用例管理工具种导出模板三、写用例的核心要素用例编号、用例标题、前置条件、用例步骤,预期结果、优先级(必填)系统名称、模块名称、用例创建时间、用例类型、实际结果、执行时间(非必填项)四…

TEN 现已接入智谱 GLM-Realtime丨社区来稿

就在上周,三星 Galaxy S25 系列全球首发。基于最新 Galaxy AI 的三星 Galaxy S25 系列手机是三星在全球范围内首次推出具有视频通话功能的原生 AI 智能硬件产品。三星 Galaxy S25 系列背后的智谱最新实时音视频通话 GLM-Realtime 模型,今天已经以插件形式接入 TEN。现在你可以…

Canvas._left will be removed, DO NOT USE IT

问题:SignaturePad 手绘板,在电脑端可以绘制,在小程序端绘制以后不显示。开发者工具打印日志:Canvas._left will be removed, DO NOT USE IT.原因:真机使用时确实无法获取该canvas的实例属性_left.解决:通过微信小程序的wx.createSelectorQuery()方法得到query筛选器,通…

实战解析传统发电站智能化改造-第二期(带图带教程)

传统发电站的智能化改造,如同为老工匠配备高科技工具,提升效率与精准度。改造后的发电站兼具传统与智能,更高效、环保,适应现代能源需求。智慧系统搭建平台是连接感知层和应用层的桥梁,将原始数据转化为有价值的信息,为智能决策和应用提供支持。上期介绍了传统发电站改造…

PostgreSQL技术大讲堂 - 第80讲:duckdb数据库

PostgreSQL第80讲:主题:duckdb数据库 内容介绍: 1、duckdb身世之谜 2、duckdb性能为什么秒杀众多数据库 3、安装duckdb时如何跳过众多的坑 4、duckdb的使用和管理 5、duckdb、pg_duckdb、pg三个数据库性能大比拼 主讲老师:CUUG数据库老陈,PG中文社区委员、CCF数据库专委会…

LLM高效推理:KV缓存与分页注意力机制深度解析

随着大型语言模型(LLM)规模和复杂性的持续增长,高效推理的重要性日益凸显。KV(键值)缓存与分页注意力是两种优化LLM推理的关键技术。本文将深入剖析这些概念,阐述其重要性,并探讨它们在仅解码器(decoder-only)模型中的工作原理。https://avoid.overfit.cn/post/db8875…

Nuclei漏洞扫描器:快速、灵活的漏洞检测工具

免责声明 本文旨在介绍有关特定漏洞检测工具或安全风险的详细信息,以帮助安全研究人员、系统管理员和开发人员更好地理解和修复潜在的安全威胁,协助提高网络安全意识并推动技术进步,而非出于任何恶意目的。利用本文提到的漏洞信息或进行相关测试可能会违反法律法规或服务协议…

BUUCTF-Web方向16-20wp

[极客大挑战 2019]PHP 由内容提示应该存在源码备份,常见的如下,一个个尝试 后缀:tar tar.gz zip rar 名字:www web website backup back wwwroot temp访问www.zip,下载下来解压查看index.phpflag.phpclass.php <?php include flag.php;error_reporting(0);class Name{…

【Nginx开发】如何使用Nginx搭建旁路服务器获取客户端IP

一、前言 在实际业务开发过程中,很多时候有记录客户端真实IP的需求,但是从客户端发送的请求往往会经过很多代理服务器,导致后端服务获取的IP为代理以后的IP,不具有业务含义。为了解决这个问题,可以搭建一个旁路服务器,前端在发起请求的时候需要先请求旁路服务器,获取该客…

PyBy2:若依计划任务自动化上线+内存马自动生成v2.0

免责声明 本公众号文章以技术分享学习为目的。由于传播、利用本公众号发布文章而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任。一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!前言 攻防中,遇到一个ruo…

当任务失败时,顶级调度系统如何实现分钟级数据补偿?

一、补数机制的定义与挑战 补数(Backfill) 指在数据管道因系统故障、数据延迟或逻辑错误导致历史任务缺失时,重新调度并执行指定时间范围内的工作流以修复数据缺口。在大数据场景中,补数机制需解决三大核心挑战:复杂依赖链重建:需精准识别历史时间段内任务上下游关系,避…