2024.3.14力扣每日一题——合并后数组中的最大元素

2024.3.14

      • 题目来源
      • 我的题解
        • 方法一 贪心+倒序遍历

题目来源

力扣每日一题;题序:2789

我的题解

方法一 贪心+倒序遍历

个人思想:要想满足条件的基础上得到最大值,则需要贪心倒序遍历,从右往左只要满足条件就相加,不满足条件重新开始相加。感觉自己说不清楚,这里引用官方题解的说法。
官方说法:题目中的一次替换删除操作,其实是相当于将两个相邻并且非递减的数字进行求和合并。两个数字的和来替换掉原来的两个数字。而经过若干次这样的合并,整个数组的和是不变的。合并后数组中的每个元素,都是原数组的某个子数组的和,并且这些子数组拼接起来能构成整个原数组。为了使数组的最大值最大,可以贪心地做尽可能多的合并,直到整个数组都不能进行合并。合并的要求是后面的数字不小于前面的数字,就尽可能先合并靠后的数字,使其尽快能大,才能够合并前面的数字。
从后往前倒序遍历一次数组,依次比较两个相邻的元素,如果两个相邻的元素能够合并,就将其合并。如果不能合并,就继续往前判断。因为这样的操作流程,在比较过程中,靠后的数是所有操作流程可能性中能产生的最大值,而靠前的数,是所有操作流程可能性中能产生的最小值。如果在遍历过程中,比较的结果是不能合并,那么其他任何操作流程都无法合并这两个数。如果可以合并,那我们就贪心地合并,因为这样能使接下来的比较中,靠后的数字尽可能大。

时间复杂度:O(n)
空间复杂度:O(1)

public long maxArrayValue(int[] nums) {long res=nums[nums.length-1];for(int i=nums.length-2;i>=0;i--){res=nums[i]<=res?nums[i]+res:nums[i];}return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

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

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

相关文章

我与C++的爱恋:类与对象(一)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。 C是基于面向对象的&#xff0c;关注的是对象&…

单例模式的多种写法

目录 正文&#xff1a; 1.概念 2.饿汉式 3.懒汉式 3.1线程不安全的懒汉式 3.2线程安全的懒汉式 4.双重检查式 总结&#xff1a; 正文&#xff1a; 1.概念 单例模式&#xff08;Singleton Pattern&#xff09;是软件设计中常见的设计模式之一。它确保一个类只有一个实例…

Tomcat安装部署及JavaEE项目创建

一.Tomcat下载 官网链接 选择自己需要的版本&#xff08;本次采用Tomcat10&#xff09;下载 二.文件结构 解压下载的文件&#xff0c;其主要文件目录如下&#xff1a; 三.启动Tomcat 找到bin目录下的startup.bat文件&#xff0c;双击运行 启动后出现弹窗&#xff0…

【数据结构】初识数据结构与复杂度总结

前言 C语言这块算是总结完了&#xff0c;那从本篇开始就是步入一个新的大章——数据结构&#xff0c;这篇我们先来认识一下数据结构有关知识&#xff0c;以及复杂度的相关知识 个人主页&#xff1a;小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1.什么是数据结构 2.…

Java 面向对象(基础)

1、面向对象的概述及两大要素&#xff1a;类与对象 1. 面向对象内容的三条主线&#xff1a; - Java类及类的成员&#xff1a;&#xff08;重点&#xff09;属性、方法、构造器&#xff1b;&#xff08;熟悉&#xff09;代码块、内部类 - 面向对象的特征&#xff1a;封装、继承…

洛谷 1331.海战

这道题其实对于那个船的相邻问题说的相当不清楚&#xff0c;因为既然不是一条船&#xff0c;为什么还相邻呢&#xff1f;让人有点摸不到头脑。 总之可以用dfs来解决。你也可以选择用bfs&#xff0c;这个模型本质上就是flood fill。 至于判断条件&#xff0c;也就是在一个#为中…

JMeter+Grafana+influxdb 配置出现transaction无数据情况解决办法

JMeterGrafanainfluxdb 配置出现transaction无数据情况解决办法 一、问题描述二、解决方法 一、问题描述 如下图所示出现application有数据但是transaction无数据情况 二、解决方法 需要做如下设置 打开变量设置如下图打开两个选项 然后再进行后端监听器的设置 如下图所…

Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更&#xff0c;通过shell脚本部署比较繁琐&#xff0c;所以决定采用ansible脚本对远程主机root密码进行批量重置&#xff0c;该脚本已经在稳定运行在正式环境下。具体方法如下: 1) 在服务端安装ansible …

数据结构进阶篇 之 【交换排序】(冒泡排序,快速排序递归、非递归实现)

当你觉的自己不行时&#xff0c;你就走到斑马线上&#xff0c;这样你就会成为一个行人 一、交换排序 1.冒泡排序 BubbleSort 1.1 基本思想 1.2 实现原理 1.3 代码实现 1.4 冒泡排序的特性总结 2.快速排序 QuickSort 2.1 基本思想 2.2 递归实现 2.2.1 hoare版 2.2.2 …

软件设计原则:里氏替换原则

定义 里氏替换原则&#xff08;Liskov Substitution Principle, LSP&#xff09;确保继承表现为一种类型扩展而非类型的重定义。具体而言&#xff0c;如果类型 S 是类型 T 的子类型&#xff0c;则类型 T 的对象可以在程序中被类型 S 的对象替换&#xff08;即&#xff0c;类型…

NoSQL之Redis

目录 一、关系型数据库与非关系型数据库 1.关系数据库 2.非关系数据库 2.1非关系型数据库产生背景 3.关系型数据库与非关系型数据区别 &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 &#xff08;3&#xff09;对事物性的支持不同 …

关于VueCli项目中如何加载调试Worker和SharedWorker

安装Webpack插件 VueCli 项目中默认是没有加载 worker 的配置&#xff0c;需要额外安装 webpack 插件来实现&#xff0c;让我们开始安装 worker-loader 插件 # npm npm install worker-loader # pnpm pnpm install worker-loader # yarn yarn add worker-loader配置Webpack插…

微服务(基础篇-008-es、kibana安装)

目录 05-初识ES-安装es_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p81&vd_source60a35a11f813c6dff0b76089e5e138cc 1.部署单点es 1.1.创建网络 1.2.加载镜像 1.3.运行 2.部署kibana 2.1.部署 2.2.DevTools 3.安装IK分词器 3.1.在线安装ik…

装修避坑指南 | 定制家具你遇到过哪些坑?福州中宅装饰,福州装修

定制家具时可能会遇到以下一些常见问题&#xff1a; 尺寸不准确&#xff1a;由于定制家具需要按需定制&#xff0c;对尺寸的要求很高。如果尺寸不准确&#xff0c;很可能会导致安装困难或者家具不符合空间需求。 材料质量差&#xff1a;有些厂家可能会使用质量较差的材料来降…

[AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步

目录 关键词平台说明背景一、implicit synchronization1.1 Write requests 流程 (NvM_WriteBlock)1.2 Read requests 流程 (NvM_ReadBlock)1.3 Restore default requests 流程 (NvM_RestoreBlockDefaults)1.4 Multi block read requests 流程 (NvM_ReadAll)1.5 Multi block wri…

C# BitConverter

BitConverter大端小端转16进制 BitConverter BitConverter 是 C# 中的一个类&#xff0c;它提供了用于字节顺序操作的方法&#xff0c;包括在基本数据类型&#xff08;如 int、float、double 等&#xff09;和它们的字节表示之间转换的方法。这个类在处理二进制数据、网络编程…

【Python系列】 yaml中写入数据

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

WEB漏洞-文件上传之基础及过滤方式

目录 案例1&#xff1a;百度搜索关键词&#xff0c;找到可能存在漏洞的网页 案例2&#xff1a;不同格式下的文件类型后门测试 案例3&#xff1a;配合解析漏洞下的文件类型后门测试 案例4&#xff1a;本地文件上传漏洞下的文件类型后门测试 案例5&#xff1a;某CVE漏洞利用…

Java基础知识总结(38)

&#xff08;1&#xff09;Arrays工具类 Java提供了Arrays工具类&#xff0c;里面包含了一些方法&#xff0c;可以直接操作数组。 1、int binarySearch(long[] a, long key)&#xff1a;使用二分查找法查询key元素值在数组a中出现的索引&#xff0c;如果a数组不包含key元素&…

MySQL索引原理

MySQL索引原理 1、Innodb中的B树是怎么产生的呢? 背景1.1、mysql索引使用B树&#xff0c;为什么&#xff1f;1.2、主键索引图示1.3、mysql最好使用自增ID&#xff1a;为什么呢&#xff1f;1.4、高度为3的B树能存多少条数据&#xff1f;a、假设2层b、假设3层 2、索引采用什么数…