算法训练营第三十六天 | LeetCode 1005 K次取反后最大化的数组、LeetCode 134 加油站

LeetCode 1005 K次组饭后最大化的数组

这题贪的主要是数值最大化。如果K > 负数个数,我们就先将负数全部转换成它的相反数,并将K--,之后K剩余的值可以对2取模,为0的话直接得出最后结果,为的话我们要在当前所有值里取最小值,对其进行取反。如果K <= 负数个数,K用完直接结束,将数组累加即可。

代码如下:

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

LeetCode 134 加油站

兄弟们,这题我老一时隔一天,终于写出来了!其实也不是很难,就是一个比较复杂的模拟。但是里面用贪心缩短了循环次数,这就造成我们的麻烦了。

主要思路是用一个cnt模拟每次的起点,在循环内部用一个i变量模拟走过的加油站数,这里面涉及到i到达右边界后要回到1的问题。比较麻烦的是在刚开始起步时需要先走一步,便于二重循环的判断条件能够正常运转,不然i和cnt开始时处于同一位置无法判断是已经走一圈了还是刚开始的状态,这个后面需要优化下不然面试时也无法立刻就写出来。

同时这里面还用到一个特别的规律:如果从某个加油站起步没能到达的第一个加油站是a,那么从该起始加油站到a中间的任何一个加油站,都无法到达a,所以遇到无法到达的第一个加油站时,直接将cnt移到i + 1退出循环即可。需要注意判别cnt比i+1大的情况,这是为了防止多次遍历造成死循环的出现。

class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int cnt = 0;int gasNum = 0;while (cnt < gas.length) {gasNum += (gas[cnt] - cost[cnt]);if (gasNum < 0)  {cnt = cnt + 1;gasNum = 0;continue;}int i = cnt + 1;if (i == gas.length) i = 0;while (i != cnt) {if (gasNum + gas[i] - cost[i] >= 0) {gasNum += (gas[i] - cost[i]);i++;} else if (cnt < i + 1) {gasNum = 0;cnt = i + 1;break;} else {cnt = gas.length;break;}if (i == gas.length) i = 0;}if (i == cnt) return cnt;}   return -1;}
}

LeetCode 135 分发糖果

这题要贪心两次,一次从前往后遍历,如果右孩子比左孩子大并且他的评分比左孩子小或者相等,那么他的评分赋为左孩子评分+1

第二次从后往前遍历,如果左孩子比右孩子大并且他的评分比右孩子小或者相等,那么他的评分等于右孩子评分+1

两次分别取反向遍历的原因是有递推关系存在,前序遍历可以处理这样的情况:假如左边增加了,右边也要跟着增长,适用于右边大于左边的情况;后序遍历可以处理这样的情况:假如右边增长了,左边也要跟着增长,适用于左边大于右边的情况

这题需要再看下,不知道解法恐怕挺难写得出来

代码如下:

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

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

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

相关文章

Python | Leetcode Python题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution:def sortedArrayToBST(self, nums: List[int]) -> TreeNode:def helper(left, right):if left > right:return None# 选择任意一个中间位置数字作为根节点mid (left right randint(0, 1)) // 2root TreeNode(nums…

纯血鸿蒙APP实战开发——边缓存边播放案例

介绍 OhosVideoCache是一个支持边播放边缓存的库&#xff0c;只需要将音视频的url传递给OhosVideoCache处理之后再设置给播放器&#xff0c; OhosVideoCache就可以一边下载音视频数据并保存在本地&#xff0c;一边读取本地缓存返回给播放器&#xff0c;使用者无需进行其他操作…

NDIS小端口驱动(五)

在需要的时候&#xff0c;我们也许需要NDIS微型端口程序信息&#xff0c;下面会从多个方面来讨论如何查询NDIS微型端口驱动。 查询无连接微型端口驱动程序 若要查询无连接微型端口驱动程序维护的 OID&#xff0c;绑定协议调用 NdisOidRequest 并传递 一个NDIS_OID_REQUEST 结…

Mac 安装 git

文章目录 前言一、介绍二、下载三、验证四、配置五、Git常用命令六、git提交和撤销工作流程代码提交和提交同步代码撤销和撤销同步 FAQ1.homebrew 下载解决方法一&#xff08;强烈推荐&#xff09;&#xff1a;解决方法二&#xff1a; 总结 前言 Git 是一个开源的分布式版本控…

Java - Stream流式编程

Stream流式操作 Stream流式操作&#xff0c;就是学习java.util.stream包下的API&#xff0c;Stream不同于java的输入输出流&#xff0c;是实现对集合&#xff08;Collection&#xff09;的复杂操作&#xff0c;例如查找、替换、过滤和映射数据等&#xff0c;集合是一种静态的数…

LeetCode547省份数量

题目描述 有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市&#xff0c;组内不含其他没有相连的城市。给…

第十一章 文件及IO操作

第十一章 文件及IO操作 文件的概述及基本操作步骤 文件&#xff1a; 存储在计算机的存储设备中的一组数据序列就是文件不同类型的文件通过后缀名进行区分 文本文件&#xff1a;由于编码格式的不同&#xff0c;所占磁盘空间的字节数不同(例如GBK编码格式中一个中文字符占2字…

cesium绘制三角网可视化及mesh网格数据解析

可视化运行效果(水质污染扩散) 实现运行效果 术语 Mesh网格数据解析 Mesh&#xff08;网格&#xff09;在不同领域有不同的应用和定义。在计算机网络中&#xff0c;Mesh网络指的是一种无中心的网状结构&#xff0c;每个节点都与其他节点相连。而在3D计算机图形学中&#…

云原生Kubernetes: K8S 1.26版本 部署KubeSphere

目录 一、实验 1.环境 2.K8S 1.26版本部署HELM 3.K8S 1.26版本 部署KubeSphere 4.安装KubeSphere DevOps 二、问题 1.如何安装Zadig 2.扩展插件Zadig安装失败 3.calico 如何实现不同node通信 4.如何清除docker占用的磁盘空间 5.如何强制删除资源 6.namespace删除不…

CGAL 点云生成高程模型数据(DSM)

点云生成高程模型 一、什么是DSM?二、C++代码三、结果可视化一、什么是DSM? DSM(Digital Surface Model)是一种数字高程模型,通常用于描述地表地形的数字化表示。它是由一系列离散的高程数据点组成的三维地形模型,其中每个点都具有其相应的高程值。   DSM主要用于获取和…

宿舍管理系统--毕业设计

毕业设计&#x1f4bc;MD5加密&#x1f512;SSM框架&#x1f3a8;Layui框架&#x1f384; 实现功能 管理员的登录与登出 管理员,班级,学生,宿舍&#xff0c;卫生&#xff0c;访客各模块增删改查 个别模块关联查询 各个模块数据导出Excel 一些截图

[4]CUDA中的向量计算与并行通信模式

CUDA中的向量计算与并行通信模式 本节开始&#xff0c;我们将利用GPU的并行能力&#xff0c;对其执行向量和数组操作讨论每个通信模式&#xff0c;将帮助你识别通信模式相关的应用程序&#xff0c;以及如何编写代码 1.两个向量加法程序 先写一个通过cpu实现向量加法的程序如…

软件设计:基于 python 代码快速生成 UML 图

1. 官方文档 PlantUML Language Reference Guide Comate | 百度研发编码助手 百度 Comate (Coding Mate Powered by AI) 是基于文心大模型的智能代码助手&#xff0c;结合百度积累多年的编程现场大数据和外部优秀开源数据&#xff0c;可以生成更符合实际研发场景的优质代码。…

自动化测试里的数据驱动和关键字驱动思路的理解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 初次接触自动化测试时&#xff0c;对数据驱动和关键字驱动不甚理解&#xff0c;觉得有点故弄玄须…

GBDT、XGBoost、LightGBM算法详解

文章目录 一、GBDT (Gradient Boosting Decision Tree) 梯度提升决策树1.1 回归树1.2 梯度提升树1.3 Shrinkage1.4 调参1.5 GBDT的适用范围1.6 优缺点 二、XGBoost (eXtreme Gradient Boosting)2.1 损失函数2.2 正则项2.3 打分函数计算2.4 分裂节点2.5 算法过程2.6 参数详解2.7…

oracle中insert all的用法

1、简述 使用insert into语句进行表数据行的插入&#xff0c;但是oracle中有一个更好的实现方式&#xff1a;使用insert all语句。 insert all语句是oracle中用于批量写数据的 。insert all分又为 无判断条件插入有判断条件插入有判断条件插入分为 Insert all when... 子句 …

利用 MongoDB Atlas 进行大模型语义搜索和RAG

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

基于英飞凌BGT60LTR11AIP E6327芯片具低功耗的脉冲多普勒操作模式常用于汽车应用的雷达上

芯片特征&#xff1a; 60 GHz收发器MMIC&#xff0c;带一个发射器和一个接收器单元封装天线&#xff08;AIP&#xff09;&#xff08;6.73.30.56 mm3)低功耗的脉冲多普勒操作模式自主模式用于运动和运动方向的集成检测器运动检测信号的直接输出目标检测范围的15个可配置阈值检测…

Android14之Binder调试(二百一十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

前端面试题日常练-day21 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 AJAX 是什么的缩写&#xff1f; a) Asynchronous JavaScript and XMLb) Asynchronous JavaScript and XHTMLc) Asynchronous Java and XMLd) Asynchronous Java and XHTML使用 AJAX 可以实现以下哪…