代码随想录算法训练营day34 | 1005.K次取反后最大化的数组和 ,134. 加油站,135. 分发糖果

news2024/9/27 9:28:49

代码随想录算法训练营day34 | 1005.K次取反后最大化的数组和 ,134. 加油站,135. 分发糖果

  • 1005.K次取反后最大化的数组和
    • 解法一:两次正常排序
    • 解法二:一次排序
  • 134. 加油站
  • 135. 分发糖果


1005.K次取反后最大化的数组和

教程视频:https://www.bilibili.com/video/BV138411G7LY/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述

解法一:两次正常排序

第一次取绝对值最大负数,第二次去绝对值最小非负数。

class Solution {
    public int largestSumAfterKNegations(int[] nums, int k) {
        Arrays.sort(nums);
        int count = 0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]<0 && k>0){
                k--;
                nums[i]*=-1;
            }
        }
        Arrays.sort(nums);
        if(k>0 && k%2==1){
            nums[0]*=-1;
        }
        int sum=0;
        for(int i=0;i<nums.length;i++){
            sum+=nums[i];
        }
        return sum;
    }
}

解法二:一次排序

直接按照绝对值排序
利用了java8的新特性:stream

class Solution {
    public int largestSumAfterKNegations(int[] nums, int K) {
    	// 将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小
	nums = IntStream.of(nums)
		     .boxed()
		     .sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1))
		     .mapToInt(Integer::intValue).toArray();
	int len = nums.length;	    
	for (int i = 0; i < len; i++) {
	    //从前向后遍历,遇到负数将其变为正数,同时K--
	    if (nums[i] < 0 && K > 0) {
	    	nums[i] = -nums[i];
	    	K--;
	    }
	}
	// 如果K还大于0,那么反复转变数值最小的元素,将K用完

	if (K % 2 == 1) nums[len - 1] = -nums[len - 1];
	return Arrays.stream(nums).sum();

    }
}

134. 加油站

教程视频:https://www.bilibili.com/video/BV1jA411r7WX/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述
在这里插入图片描述
【注意】想清楚局部最优解,不要陷入数组循环的误区。
局部最优: 到第 i 天累加剩余油量curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行。
全局最优: 找到可以跑一圈的起始位置。

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); 
                curSum = 0;
            }
        }
        if (totalSum < 0) return -1;
        return index;
    }
}

135. 分发糖果

教程视频:https://www.bilibili.com/video/BV1ev4y1r7wN/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述
解题关键:先确定一个方向,再确定另一个方向,不要同时考虑两边,否则会顾此失彼。
(按照题意,等于的情况和小于一样处理)
因此位置 i 共有两种情况需要增大:
1、比前一个数大,即ratings[i]>ratings[i-1],此时小的在左边,这种情况从前向后遍历
2、比后一个数大,即ratings[i]>ratings[i+1],此时小的在右边,这种情况从后向前遍历

class Solution {
    public int candy(int[] ratings) {
        int[] candy = new int[ratings.length];
        candy[0]=1;
        //右大于左,即ratings[i]>ratings[i-1],小的在左边,这种情况从前向后遍历
        for(int i=1;i<candy.length;i++){
            candy[i] = (ratings[i-1]<ratings[i]) ? candy[i-1]+1 : 1;
        }
		//左大于右,即ratings[i]>ratings[i+1],小的在右边,这种情况从后向前遍历
        for(int i=candy.length-2;i>=0;i--){
            if(ratings[i]>ratings[i+1]){
                candy[i]=Math.max(candy[i+1]+1, candy[i]);
            };
        }

        int sum=0;
        for(int i=0;i<ratings.length;i++){
            sum+=candy[i];
        }
        return sum;
    }
}

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

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

相关文章

生态系统服务(InVEST模型应用)

白老师&#xff08;研究员&#xff09;&#xff1a;长期从事生态系统结构-格局-过程-功能-服务的变化与响应关系等研究工作&#xff1b;重点围绕生物多样性、生态系统服务与价值等&#xff0c;构建生物地球化学模型和评价指标体系&#xff0c;为城市、区域和自然保护区的可持续…

sqli-labs通关(二十三)

第二十三关 这一关是get类型 当输入?id1时&#xff0c;出现报错信息&#xff0c;是由单引号闭合的 但是输入?id1--的时候&#xff0c;还是报错&#xff0c;说明我们的注释符可能被过滤处理了 查看码源&#xff0c;确实是把注释符过滤了 那我们还是根据语句构造 ?id1 or 1…

本地使用3台centos7虚拟机搭建K8S集群教程

第一步 准备3台centos7虚拟机 3台虚拟机与主机的网络模式都是桥接的模式&#xff0c;也就是他们都是一台独立的“主机” &#xff08;1&#xff09;kebe-master的配置 虚拟机配置&#xff1a; 网络配置&#xff1a; &#xff08;2&#xff09;kebe-node1的配置 虚拟机配…

(二)用Qt实现登录界面——打造简洁、美观的登录体验

文章目录 一、引言1、什么是Qt框架&#xff0c;其主要特点是什么&#xff1f;2、Qt框架的应用范围&#xff0c;如何在不同的平台上开发应用程序&#xff1f;3、Qt框架的优点和劣势&#xff0c;与其他框架的比较。 二、相关技术1、socket编程 三、Qt框架的使用1、Qt框架的基本概…

数据库与身份认证

目录 1.数据库的基本概念 1.1什么是数据库 1.2常见的数据库及分类 1.3传统型数据库的数据组织结构 2.安装并配置MySQL 2.1了解需要安装哪些MySQL相关的软件 2.2 MySQL在 Windows 环境下的安装 3.MySQL的基本使用 3.1使用 MySQL Workbench 管理数据库 3.1.1连接数据库…

CSS 圆锥渐变+MASK遮罩实现WIFI图标

前言 &#x1f44f;CSS 圆锥渐变MASK遮罩实现WIFI图标&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义css变量–bg背景色&#xff0c;–dot弧宽度&#xff0c;–w父元素宽度&#xff0c;–gap&#xff0c…

docker安装elasticsearch

前言 安装es么&#xff0c;也没什么难的&#xff0c;主要网上搜一搜&#xff0c;看看文档&#xff0c;但是走过的坑还是需要记录一下的 主要参考这三份文档&#xff1a; Running the Elastic Stack on Docker docker简易搭建ElasticSearch集群 Running Kibana on Docker …

模型优化-剪枝 (一)非结构化剪枝

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117非结构剪枝 特点 1.简单,将满足某些田间的 weight 置为0即可 2.pytorch容易访问所有参数(weight) 3.最精细化 类型 1.细粒度剪枝(fine-grained) …

数据库创建与管理

目录 一、创建数据库 1&#xff0e;准备创建数据库 2&#xff0e;创建数据库实例分析 方法一&#xff1a;使用对象资源或企业管理器创建数据库 方法二&#xff1a;使用Transact-SQL命令创建数据库 二、管理数据库 1&#xff0e;修改数据库 使用SQL命令修改数据库 2&…

珞珈一号夜间灯光数据处理流程

一、前言 “珞珈一号”卫星是长光卫星技术有限公司首次通过商业化订单为武汉大学研制的卫星,是全球首颗专业夜光遥感卫星,主要用于夜光遥感及导航增强技术验证。卫星整星重量仅为20kg,携带的大视场高灵敏夜光遥感相机,具备130m分辨率、260km幅宽的夜光成像能力,为基于夜光…

【全国大学生统计建模大赛】2023年统计建模大赛赛题解读

目录 关于中国式现代化统计测度的几点思考 &#xff08;一&#xff09;房祥忠教授——大局层面 一、现代化释义 二、现代化度量的单变量方法 2.1 单一变量情形 2.2 分组评分 三、现代化度量的多变量方法 3.1 问题 3.2 解决方法 四、现代化度量的理想化方法 4.1 问题 …

SSM整合详细教学(中)

SSM整合详细教学&#xff08;中&#xff09; 三、异常处理器问题导入1 异常介绍2 异常处理器2.2.1 编写异常处理器2.2.2 RestControllerAdvice注解介绍2.2.3 ExceptionHandler注解介绍 四、项目异常处理方案问题导入1 项目异常分类2 项目异常处理方案3 项目异常处理代码实现3.1…

zookeeper下载安装集群部署

文章目录 一、zookeeper官网下载二、JDK环境安装三、zookeeper安装1.zookeeper解压2.zookeeper配置文件介绍 克隆服务器1.网络检查2.集群配置3.启动集群 一、zookeeper官网下载 下载地址&#xff1a;https://archive.apache.org/dist/zookeeper/找到对应的版本下载 二、JDK环…

Python3.10动态修改Windows系统(win10/win11)本地IP地址(静态IP)

一般情况下&#xff0c;局域网里的终端比如本地服务器设置静态IP的好处是可以有效减少网络连接时间&#xff0c;原因是过程中省略了每次联网后从DHCP服务器获取IP地址的流程&#xff0c;缺点是容易引发IP地址的冲突&#xff0c;当然&#xff0c;还有操作层面的繁琐&#xff0c;…

SpringBoot ( 一 ) 搭建项目环境

1.搭建环境 1.1.创建项目向导 使用idea中的向导创建SpringBoot项目 1.1.1.建立新的项目 位置 : 菜单 > File > New > Project… 1.1.2.选择向导 默认的向导URL 是 https://start.spring.io 建议使用 https://start.aliyun.com 1.1.3.配置项目信息 Group : 组织…

从地方旅游的宣传谈起:如何吸引主流媒体报道,强势刷屏?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 五一小长假已经过去好几天了&#xff0c;大家渐渐的从假期舒适的闲暇转到正常的工作生活中了&#xff0c;但利用五一热点宣传的余温还在继续&#xff0c;今天胡老师就i注意到一篇题为&am…

机器学习之朴素贝斯二、情感分析

目录标题 一、什么是朴素贝叶斯&#xff1f;二、利用朴素贝叶斯进行情感分析1. 数据类别说明2. 什么是词袋模型3. 数据展示4. 利用词袋模型进行词表构建5. 到了这一步&#xff0c;我们的前期工作都已经准备好了&#xff0c;有了样本的向量化数据&#xff0c;开始进行 朴素贝叶斯…

电容笔哪个厂家的产品比较好?苹果平板的电容笔推荐

从目前来说&#xff0c;这个苹果的正版电容笔&#xff0c;售价真的是太贵了&#xff0c;一支就要接近上千元。事实上&#xff0c;对于那些没有很多预算的人来说&#xff0c;平替电容笔是一个很好的选择。一支苹果电容笔&#xff0c;价格是四支平替电容笔的四倍&#xff0c;但平…

机器人控制系统学习和研究中数学的重要性

其实具备科学思维的方式非常非常难&#xff0c;很多情况下脑海中并非客观事实&#xff0c;而是充满了幻觉。 如果在各种AI工具中问及这样的问题&#xff0c;会得到类似如下回复&#xff1a; 机器人控制系统学习和研究中数学的重要性主要体现在以下几个方面&#xff1a; 机器人运…

C961W扫描枪

影像解码技术&#xff0c;微米级条码&#xff0c;轻松扫描 百万像素引擎&#xff0c;擅长读取制造业遇到的高密度&#xff0c;微小尺寸条码。 ≥3mil读码密度&#xff0c;准确解码。 一、产品简介 C961W是一款基于先进影像解码技术和微功率无线跳频传输技术的无线高性能、高…