LeetCode算法心得——合并后数组中的最大元素

news2024/11/16 5:56:37

大家好,我是晴天学长,这是一道动态规划的逆向思维题,此题甚是神奇!💪💪💪
在这里插入图片描述


1 )合并后数组中的最大元素

在这里插入图片描述


2) .算法思路

只能选择旁边的,而且还是比自己等大或者比自己小的

启发:从后面来,只有递减序列才能相加。

以自己为底的最大递减序列(动态规划)

1.首先建立一个跟数组大小的数组
2.max=
3.从后续遍历nums
4.判断该下标最大的递增序列是否加入
5.更新max
6.输出max
7.注意sum的数据类型,得是long


3).代码示例


class Solution {
    public long maxArrayValue(int[] nums) {
            long[] sum = new long[nums.length];
            long max = nums[nums.length-1];
            sum[nums.length-1] = nums[nums.length-1];
            for (int i = nums.length-2; i >=0; i--) {
                long temp = nums[i];
                if (temp <= sum[i+1]) {
                    sum[i] = sum[i + 1] + temp;
                } else {
                    sum[i] = temp;
                }
                max = Math.max(max, sum[i]);
            }
      
            return max;
    }
}

4).总结

  • 思路1:
  • 从正面遍历数组时,如果当前元素与前面的元素相加后的值比当前元素本身大,那么就会丢失前面的一些元素,因为它们会被当前元素替换掉,从而导致计算结果出错。比如,对于数组[1, -2, 3, 5, -3, 2],如果从正面遍历,计算到第三个元素时,当前的值为2,而前面的值为1 - 2 + 3 = 2,因此会将前面的元素1和-2丢失掉,从而导致最终结果不正确。
  • 而从逆序遍历数组时,可以保证每个元素都会被计算到,并且不会丢失之前的元素。因为当前元素是后面元素的前缀和,所以它们的和可以被计算出来并更新到当前元素中,而不需要担心之前计算出的值会被替换掉。
  • 思路2:
  • 升序相加会出问题。(因为升序相加可能会出现突然比前面那个sum大的情况)
    降序相加就不会出问题。(因为计算的是前缀和,可以算到每一个值,假如一个数 6 大于后面的所有的前缀和,那最大值就是6了,假如6加了前面的会变小,那最大值还是6,或者会变大当然就更好了)

因此,从逆序遍历数组可以保证每个元素都会被正确地计算到,并且得到正确的答案。

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

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

相关文章

码银送书第四期《Python之光》

作为一种极其流行的编程语言&#xff0c;Python已经成为了当今最为重要的生产力工具之一。无论小学生还是各行各业的从业人员&#xff0c;都开始学习Python编程。这种编程语言在许多领域中都有广泛的应用&#xff0c;因此Python编程已经成为了许多职业的必备能力或者加分项。 …

【云边有个小卖部】上新《探秘Linux》第二章 Linux权限管理

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1C初阶C进阶数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我…

mac下安装vue cli脚手架并搭建一个简易项目

目录 1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 1、下载node。 如果有node&#xff0c;打开终端&#xff0c;输入node -v和npm -v , 确保node和npm的版本&#xff0c;(这里可以根据自己的需求去选择&#xff0c;如果对最新版本的内容有…

JVM | 类加载是怎么工作的

类加载是怎么工作的 引言类加载器工作原理 | 城市建设过程1. 类加载器加载类前过程JVM进程启动 | 建筑工程立项Bootstrap类加载器创建扩展和应用类加载器 | 高级工程师的两位得力助手 2. 类加载器加载类后过程应用类加载器加载Building链接过程&#xff08;验证&#xff0c;准备…

Huge and Efficient! 一文了解大规模预训练模型高效训练技术

本文分为三部分介绍了大模型高效训练所需要的主要技术&#xff0c;并展示当前较为流行的训练加速库的统计。文章也同步发布在AI Box知乎专栏&#xff08;知乎搜索 AI Box专栏&#xff09;&#xff0c;欢迎大家在知乎专栏的文章下方评论留言&#xff0c;交流探讨&#xff01; 引…

计算机图形学十四路径追踪与渲染方程

路径追踪&#xff08;Path Tracing&#xff09;与渲染方程&#xff08;Render Equation&#xff09; 简介 利用路径追踪我们可以实现比whitted-style ray tracing更好的全局光照&#xff08;GI&#xff09;效果。它的理论基础是渲染方程&#xff0c;最开始由吉姆卡吉亚&#…

066、故障处理之热点问题

为什么要解决热点 分布式架构中各个组件的理想状态&#xff1a;资源利用率相对均衡 形成写热点的原因 高频访问的小表SQL执行计划不合理具有顺序增长属性的索引扫描 数据组织模型 例如数据是序列递增&#xff0c;则有可能数据全部都集中一个region上 &#xff0c;或者集中…

什么是等保定级?

TOC 一、等保评测介绍 1.1 等保定级目的 网络安全等级保护介绍&#xff1a;目的就是涉及民生问题的信息系统&#xff0c;要按照影响&#xff0c;提前划定等级 实施网络安全保护 信息系统&#xff1a;就是保护的系统&#xff0c;比如 魔幻的 健康码系统安全产品&#xff1a;健…

【lesson5】linux常见权限问题

文章目录 目录权限umask粘滞位 目录权限 先来思考一个问题: 进入一个目录需要什么权限呢&#xff1f; 由上图我们可以得知&#xff0c;进入目录需要x权限&#xff0c;那么没有r和w权限是什么情况呢&#xff1f; 从图中我们可以得知没有r权限不能查看目录里面的内容&#xff…

基于STM32设计的智能教室管理系统

前言 本文介绍了一个智慧教室的设计,该设计由电器设备控制系统、环境检测系统和考勤系统三大模块构成。通过使用STM32微处理器和物联网电器设备控制中心,实现对教室内风扇、照明灯和窗帘等电器设备的智能化统一控制与运行。同时,环境检测系统可以实时监测环境光强、温度、湿…

模型调参及优化

调参 调权重参数&#xff0c;偏置参数 训练数据集用来训练参数w&#xff0c;b 调超参数 验证数据集用来选择超参数学习率lr&#xff0c;隐藏层大小等 如何调参 当泛化误差和训练误差都没有降下去说明欠拟合&#xff1b;当训练误差降下去&#xff0c;但泛化误差出现上升形式&…

33. 本地记事本

本地记事本 html部分 <button class"add"><i class"iconfont icon-jiahao"></i> </button>css部分 *{margin: 0;padding: 0; } body{background-color: #7bdaf3;display: flex;padding-top: 3rem;flex-wrap: wrap; } .add{pos…

Vue2基础一、快速入门

零、文章目录 Vue2基础一、快速入门 1、Vue 概念 &#xff08;1&#xff09;为什么学 前端必备技能 岗位多&#xff0c;绝大互联网公司都在使用Vue 提高开发效率 高薪必备技能&#xff08;Vue2Vue3&#xff09; &#xff08;2&#xff09;Vue是什么 **概念&#xff1a;…

第二届“鼎信杯”榜单发布,麒麟信安荣获“优秀技术支撑奖”

由中国电子信息产业发展研究院、北京市海淀区人民政府主办&#xff0c;中国软件评测中心&#xff08;工业和信息化部软件与集成电路促进中心&#xff09;、中关村科学城管委会和北京市国际技术贸易协会承办的“2023 鼎信杯信息技术发展论坛”日前在北京举办。麒麟信安受邀参加主…

和鲸 ModelWhale 与麒麟系统适配认证,打造自主安全、性能可靠的信创 AI 基础软件

发展信创&#xff0c;解决核心技术的自主可控问题&#xff0c;是我国产业升级和数字经济发展过程中的重要命题。信创产业链主要由基础硬件、基础软件、应用软件、信息安全及云计算平台等几部分组成&#xff0c;拥抱信创国产化需要各厂商聚力共创生态&#xff0c;增强自身产品的…

JSONPath提取器案例详解

jsonpath语法 $ 表示根节点&#xff0c;也是所有jsonpath表达式的开始 . 表示获取子节点 .. 表示获取所有符合条件的内容 * 代表所有的元素节点 [] 表示迭代器的标示&#xff08;可以用于处理下标等情况&#xff09; [,] 表示多个结果的选择 ?() 表示过滤操作 表示当前节点一…

【QT】Day1

1. 收到实现登录框 要求&#xff1a; 1、登录窗口更改标题、图标 2、设置固定尺寸、并给定一定的透明度 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> //信息调试类&#xff0c;用于打印输出的 #include <QIcon>…

windows命令行

参考:https://blog.csdn.net/u014419722/article/details/130427423 1、 创建文件夹&#xff08;mkdir或md&#xff09; 创建单个文件&#xff1a;mkdir cmd_test 创建二级文件&#xff1a;mkdir cmd_test\456\123 创建多个文件&#xff1a;mkdir cmd_test\000 cmd_test\111 2…

【js】javascript中base64转file、file压缩图片:

文章目录 一、效果图:二、实现代码: 一、效果图: 二、实现代码: /*** base64转file* param {string} urlData base64格式图片* returns */ export function base64ConvertFile(urlData) {if (typeof urlData ! string) {this.$toast("urlData不是字符串")return;}va…

IDEA 模块不加载依旧是灰色 没有变成小蓝色的方块

Settings > Build, Execution, Deployment > Build Tools > Maven > Ignored Files下降对应的模块勾选掉 但通常在Maven的配置中&#xff0c;您会找到一个名为“ignoredFiles”的列表&#xff0c;其中包含被忽略的文件和目录。您可以通过取消选中所需的文件或目录…