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

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

  • 自己看到题目的第一想法
  • 看完代码随想录之后的想法
  • 自己实现过程中遇到哪些困难
  • 今日收获,记录一下自己的学习时长

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

自己看到题目的第一想法

1005.K次取反后最大化的数组和:输出只需要和,不需要知道具体下标,所以是可以排序再进行反转的。先将所有数进行排序,从负数开始去反转,并且每反转一个就将k减1,之后再对最小的非负数进行多次反转,直到k减为0。这个思路还是很清晰,但具体到代码如何实现是需要再看一看的。
134.加油站:可以环绕行驶一周的条件就是,在行驶的过程中邮箱的油量一直是正数。可以用一个while判断循环。
135.分发糖果: 看到例子之后发现和旁边相等的孩子好可怜,因为题目要求相邻高的得到的多,但是没说相等的怎么办,由于贪心所以只能给他更少的糖果了。最终返回的是数量,并不需要知道具体分配情况,所以可以直接根据rang数组的差值数组来对总体糖果数进行有选择的加1。只通过了17/48个样例,有样例没有通过,我的思维的缺陷是,如果中间值是最大的,就没必要对中间值增加两次。

看完代码随想录之后的想法

1005.K次取反后最大化的数组和:
以下是一些代码中不太懂的地方,做出自己第一次的解释。

    	// 将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小nums = IntStream.of(nums)  //将nums数组转换成IntStream流.boxed()  //IntStream转成包装类型Stream<Integer>.sorted((o1, o2) -> Math.abs(o2) - Math.abs(o1)) //用lambda表达式表达绝对值降序排列.mapToInt(Integer::intValue).toArray(); //Integer::intValue操作将Integer包装类型转成int类型,toArray将流转成数组

这段代码总体实现是将数组按照绝对值大小从大到小降序排列,实现过程是使用流,中间涉及到将数组转成IntStream流和将Intstream转成包装类型以及这两步的逆操作。核心代码是中间的sorted(),并且利用了lambda表达式来表达绝对值降序排列。

134.加油站:
这道题和买卖股票的思路蛮相近,将gas[i]-cost[i]得到rest[i],i从0开始累加rest[i],和记为curSum,如果对currenSum求和得到负数,一旦currentSum小于0,说明[0,i]区间不能作为起始位置,起始位置从i+1算起,再从0计算currentSum进行循环。

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;}
}

代码写法也是很妙的,用了两个数组来存储总体求和,对其中一个做模拟过程,另一个就直接看逻辑上是否能够转一圈。
35.分发糖果:

自己实现过程中遇到哪些困难

今日收获,记录一下自己的学习时长

1.java的stream流
(1)流是什么?是数据结构吗?
流是一种用于处理数据集合的高级API,提供了一种声明式的方式处理数据,而不是通过显式迭代来处理数据。数据结构式存储和组织数据的容器,但是流是对数据的计算,强调处理数据的流水线操作,流本身不存储数据,而是从数据源中获取数据。
(2)流的特点以及经典示例:
1.惰性操作:只有在需要结果时,如调用结果(collect,toArray才会执行)
2.不可逆性
3.管道操作

List<String> words = Arrays.asList("apple", "banana", "cherry", "date");
List<String> result = words.stream()  // 创建一个流.filter(word -> word.startsWith("a"))  // 过滤以'a'开头的单词.sorted()  // 排序.collect(Collectors.toList());  // 收集结果到列表
System.out.println(result);  // 输出: [apple]

首先利用数组创建一个流,之后过滤以’a’开头的单词,再排序之后收集结果到列表,最后再输出。
(3)看完这段代码发现,用流操作真的很方便,直接调用流所对应的api去操作对数据的流水线操作即可。

2.java中包装类型Integer和整型int

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

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

相关文章

C++:vector的介绍及使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 文章目录 前言 一、vector的介绍 二、vector的使用 2.1.构造和赋值重载&#xff08;Member functions&#xff09; 2.2 vector iterator 的使用 2.3 vector 空间增长问题 2.4 vector 增删查改 三 sort 四 v…

邦芒面试:面试礼仪细节大揭秘

在求职过程中&#xff0c;面试礼仪如同一面镜子&#xff0c;直接反映出求职者的专业素养和个人品质。它不仅能够为求职者加分&#xff0c;还能为面试官留下深刻且积极的印象。以下就是一份详尽的面试礼仪全攻略&#xff0c;助你一臂之力。 一、守时为先 守时是面试的第一步&am…

所以研究生有不变胖的吗?

天天吃 记得和骏骏一样减肥 分享昨天无人机拍的照片

FL Studio v21.2.3.4004中文破解版百度网盘下载

FL Studio v21.2.3.4004中文破解版是一款完整的软件音乐制作环境或数字音频工作站 (DAW)。代表了超过 18 年的创新发展&#xff0c;它在一个软件包中提供了您创作、编曲、录制、编辑、混音和掌握专业品质音乐所需的一切。FL Studio v21.2.3.4004中文破解版现在是世界上最受欢迎…

长三角智能科技高端盛会—南京人工智能展览会(南京智博会)

南京&#xff0c;作为一座历史悠久的文化名城&#xff0c;早已不仅仅以其深厚的文化底蕴和独特的自然风貌著称于世。而今&#xff0c;这座古老而又年轻的城市&#xff0c;正以其卓越的科技实力和创新精神&#xff0c;成为中国乃至全球科研领域的一颗璀璨明珠。南京不仅是中国三…

No input file specified.(‘.user.ini’文件问题宝塔复制到本地,其他情况可跳过)

症状 病因 一般是宝塔直接copy到本地的情况。 宝塔面板中的.user.ini文件是一个重要的配置文件&#xff0c;它主要用于配置PHP运行环境和网站环境。以下是.user.ini文件的主要作用和操作建议&#xff1a; 防止跨目录访问和文件跨目录读取。这是.user.ini文件的主要作用之一&a…

FastAPI - 组织模块2

FastAPI没有强制指定某种格式来组织项目结构&#xff0c;开发者可以根据自己喜好和项目需要来定制自己的项目结构。 https://fastapi.tiangolo.com/zh/tutorial/bigger-applications/ 在项目根目录创建python包routers&#xff0c;然后创建member.py文件 member.py文件内容 …

pytorch修改ConvNeXt-T网络

使用迁移学习&#xff0c;修改ConvNeXt-T网络&#xff0c;对特征进行融合 import torch import torch.nn as nn import torchvision.models as modelsclass CustomConvNeXtT(nn.Module):def __init__(self, in_channels3, num_classes2, chunk2, csv_shape107, CSVTrue):super…

React Native 之 Platform检测平台模块(十九)

Platform 是一个用于检测当前运行平台&#xff08;如 iOS、Android 或Web&#xff09;的模块。它提供了一组静态属性和方法&#xff0c;允许你根据平台的不同来编写特定的代码或样式。这对于确保跨平台应用在不同操作系统上的一致性和正确性非常有用。 Platform使用代码栗子&am…

js知识点汇总之js的数据类型(值和引用)

JS中的数据类型 面试题&#xff1a;JS 中的数据类型有哪些&#xff1f;基本类型和引用类型的区别是什么&#xff1f; 简单值和复杂值两者之间本质区别两者之间行为区别 简单值和复杂值 JS 中的数据类型就分为两大类&#xff1a; 简单值&#xff08;基本类型、原始类型&#…

小程序与内嵌webview的数据交互

小程序与内嵌webview的数据交互 一、目的 我们要就将h5切换到小程序&#xff0c;由于时间问题&#xff0c;一些页面不得不通过webvie承接&#xff0c;所以这就涉及到h5和webview交互的问题。&#xff08;后期把大部分需要交互的页面迁移到小程序了&#xff0c;这都小问题。&a…

洁净环境测试标准、监测计划要点及风险评估注意事项

洁净区日常环境监测 洁净区环境监测作为污染控制策略&#xff08;CCS&#xff09;的重要组成部分&#xff0c;用于监测旨在将粒子和微生物污染风险降至最低的控制措施。下面内容&#xff0c;中邦兴业小编将与大家做个详细的分享。 环境监测计划 评估和定义粒子、微生物监测所…

2024吉林省电赛(达盛杯)

1. 电赛F4系统板3D图 提起自制STM32F407VET6系统板 2. 电赛原理图 3. 电赛PCB图 4. 智能车实物图 下图是电赛的实物图&#xff0c;结构采用3D打印 5. 软件设计 下图是程序设计图 6. 仿真视频 (1) 变化高度 2024吉林省电赛仿真1 (2) 变化轮距 2024电赛仿真2 7. APP控制小车 …

代码随想录算法训练营第二十一天| 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

[LeetCode] 530. 二叉搜索树的最小绝对差 [LeetCode] 530. 二叉搜索树的最小绝对差 文章解释 [LeetCode] 530. 二叉搜索树的最小绝对差 视频解释 题目: 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其…

Flutter 中的 AnnotatedRegion 小部件:全面指南

Flutter 中的 AnnotatedRegion 小部件&#xff1a;全面指南 Flutter 的 AnnotatedRegion 是一个功能强大的小部件&#xff0c;它允许开发者在应用程序中标记特定的区域&#xff0c;并在这些区域上附加元数据。这些元数据可以被其他小部件或应用程序逻辑使用&#xff0c;以实现…

Py列表(list)

目录 正向索引&#xff1a; 反向索引&#xff1a; 嵌套列表&#xff1a; 修改列表中的值 列表常用的方法 实例 练习&#xff1a; 正向索引&#xff1a; 从0开始&#xff0c;依次递增。第一个元素的索引为0&#xff0c;第二个元素的索引为1&#xff0c;依此类推。 列表的下标…

视频太大怎么压缩变小 视频太大了怎么压缩

视频作为一种多媒体形式&#xff0c;在当今社会的重要性日益凸显&#xff0c;其应用范围广泛&#xff0c;影响力深远。 但是视频文件的大小也在不断增加&#xff0c;这给存储和传输带来了很大的困扰。那么&#xff0c;当视频文件过大时&#xff0c;我们该如何将其压缩变小呢&am…

MyBatis中常见标签的使用(动态SQL)

MyBatis 中的动态 SQL 允许你在 XML 映射文件中编写灵活的 SQL 查询语句&#xff0c;根据不同的条件动态生成不同的 SQL 语句。这样可以避免在 Java 代码中拼接 SQL 字符串&#xff0c;使得 SQL 查询更加清晰和易维护。本文章将介绍几个常见的标签并实现动态SQL 目录 一.标签…

左偏树,可合并堆

合并两个堆并维护最小或最大性质解决树上节点问题&#xff0c;从叶节点往根维护&#xff0c;每个节点看作一个堆表示到最近的叶节点的距离&#xff0c;所以每次对合并&#xff08;树高矮&#xff09;表示堆的顶点对应下标关键代码 static void dfs(int x){for(int ihead[x];i&g…