LeetCode算法心得——有序三元组中的最大值 II (简单的动规思想)

news2024/11/17 5:26:43

大家好,我是晴天学长,枚举+简单的动态规划思想,需要的小伙伴可以关注支持一下哦!后续会继续更新的。


在这里插入图片描述


1) .有序三元组中的最大值 II

在这里插入图片描述


有序三元组中的最大值 II
给你一个下标从 0 开始的整数数组 nums 。
请你从所有满足 i < j < k 的下标三元组 (i, j, k) 中,找出并返回下标三元组的最大值。如果所有满足条件的三元组的值都是负数,则返回 0 。

下标三元组 (i, j, k) 的值等于 (nums[i] - nums[j]) * nums[k] 。

示例 1:

输入:nums = [12,6,1,2,7]
输出:77
解释:下标三元组 (0, 2, 4) 的值是 (nums[0] - nums[2]) * nums[4] = 77 。
可以证明不存在值大于 77 的有序下标三元组。
示例 2:

输入:nums = [1,10,3,4,19]
输出:133
解释:下标三元组 (1, 2, 4) 的值是 (nums[1] - nums[2]) * nums[4] = 133 。
可以证明不存在值大于 133 的有序下标三元组。
示例 3:

输入:nums = [1,2,3]
输出:0
解释:唯一的下标三元组 (0, 1, 2) 的值是一个负数,(nums[0] - nums[1]) * nums[2] = -3 。因此,答案是 0 。

提示:

3 <= nums.length <= 105
1 <= nums[i] <= 106


2) .算法思路

有序三元组中的最大值 II
(nums[i] - nums[j]) * nums[k]
枚举k
1.nums[i] - nums[j]) 只用关心这个是不是最大的就可以了

存一个最大差值,存一个最大值(不一定相关)
2.预处理右边最大值,遍历j


3) .算法步骤

  • 方法1:动态规划,枚举k

初始化变量 ans 为 0,preDiff 为 0,preMax 为 0。
遍历数组 nums,对于数组中的每个元素 x,执行以下步骤:
计算当前三元组的值 preDiff * x,并将其与 ans 进行比较,更新 ans 为较大值。
计算当前位置的最大差值 preDiff,更新为当前 preDiff 和 preMax - x 的较大值。
计算当前位置的最大元素 preMax,更新为当前 preMax 和 x 的较大值。
返回最大值 ans。

  • 方法2:预处理右边的最大值,枚举j

创建一个长度为 nums.length 的辅助数组 a,用于存储右边元素的最大值。
初始化变量 rightDiff 为 0,ans 为 0。
从数组 nums 的倒数第二个位置开始向前遍历,执行以下步骤:
计算当前位置右边的最大值 rightDiff,更新为当前 rightDiff 和 nums[i] 的较大值。
将 rightDiff 存储到辅助数组 a 的相应位置。
初始化变量 preMax 为 nums[0]。
从数组 nums 的第一个位置开始向右遍历,执行以下步骤:
计算当前三元组的值 (preMax - nums[i]) * a[i+1],并将其与 ans 进行比较,更新 ans 为较大值。
计算当前位置的最大元素 preMax,更新为当前 preMax 和 nums[i] 的较大值。
返回最大值 ans。


4).代码示例

 class Solution {
        // 方法1,动态规划,枚举k
        public long maximumTripletValue(int[] nums) {
            long ans = 0;
            long preDiff = 0, preMax = 0;
            for (int x : nums
            ) {
                ans = Math.max(ans, preDiff * x);
                preDiff = Math.max(preDiff, preMax - x);
                preMax = Math.max(preMax, x);
            }
            return ans;
        }

        //方法2 预处理右边的最大值,枚举j
        public long maximumTripletValue2(int[] nums) {
            int[] a = new int[nums.length];
            int rightDiff = 0;
            long ans = 0;
            //预处理
            for (int i = nums.length - 1; i > 1; i--) {
                rightDiff = Math.max(rightDiff, nums[i]);
                a[i] = rightDiff;
            }
            //开始遍历
            long preMax = nums[0];
            for (int i = 0; i < nums.length - 1; i++) {
                ans = Math.max(ans, (preMax-nums[i])*a[i+1]);
                preMax = Math.max(preMax,nums[i]);
            }
            return ans;
        }
    }

5).总结

  • 动态规划,枚举k,j,只用关心上一步的状态和自己的状态。(思想很重要)

试题链接:

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

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

相关文章

STM32F4X UCOSIII 互斥量

STM32F4X UCOSIII 互斥量 互斥量的概念互斥量的工作机制洗手间问题互斥量优先级继承没有优先级继承优先级继承 UCOSIII互斥量API互斥量创建函数互斥量删除函数互斥量申请函数互斥量释放函数 UCOSIII 互斥量例程 互斥量的概念 UCOSIII中的互斥量是一种特殊的信号量&#xff0c;…

重磅!这本SSCI期刊已解除On Hold状态!警惕目前6本SCIE/ESCI期刊被标记!

期刊动态&#xff1a;新增一本SSCI解除“On Hold” 最新消息&#xff0c;SSCI期刊Transformations in Business & Economics在之前被标记为On Hold&#xff0c;目前该标识已取消&#xff01;表示目前该期刊被SSCI数据库正常收录检索。 往期期刊On Hold情况&#xff1a; …

云服务器CVM_云主机_云计算服务器_弹性云服务器-腾讯云

腾讯云服务器CVM提供安全可靠的弹性计算服务&#xff0c;腾讯云明星级云服务器&#xff0c;弹性计算实时扩展或缩减计算资源&#xff0c;支持包年包月、按量计费和竞价实例计费模式&#xff0c;CVM提供多种CPU、内存、硬盘和带宽可以灵活调整的实例规格&#xff0c;提供9个9的数…

递归解析Json,实现生成可视化Tree+快速获取JsonPath | 京东云技术团队

内部平台的一个小功能点的实现过程&#xff0c;分享给大家&#xff1a; 递归解析Json&#xff0c;可以实现生成可视化Tree快速获取JsonPath。 步骤&#xff1a; 1.利用JsonPath读取根&#xff0c;获取JsonObject 2.递归层次遍历JsonObjec&#xff0c;保存结点信息 3.利用z…

钡铼BL124EC实现EtherCAT转Ethernet/IP的优势

钡铼技术的BL124EC是一款用于将EtherCAT从站转换为Ethernet/IP从站的网关设备。它是钡铼技术开发的高性能、可靠的工业自动化通信解决方案之一。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; BL124EC网关可以应用于多种工业自动化场景&#xff0c;以下…

1.6 IntelliJ IDEA开发工具

前言&#xff1a; ### 1.6 IntelliJ IDEA开发工具笔记 - **背景**&#xff1a; - 使用基础文本编辑器如记事本编写Java代码虽然可行&#xff0c;但存在效率低下且难以调试的问题。 - 集成开发环境 (IDE) 可以有效地提高Java程序的开发效率。 - **常见Java IDE**&#xf…

解决docker开启MySQL的binlog无法成功。docker内部报错:mysql: [ERROR] unknown variable

1. 报错信息 2. 操作流程 整个流程是这样的&#xff1a; 我愉快的输入docker ps&#xff0c;查看MySQL的docker 容器id 执行指令docker exec -it 8a \bin\bash进入容器内部执行vim /etc/my.cnf&#xff0c;打开配置文件按照网上说的&#xff0c;添加如下配置信息退出docker容…

韦东山老师 RTOS 入门课程(二)理解任务的创建,切换过程

RTOS 的核心实现&#xff1a;保存&#xff0c;恢复现场 接下来开始尝试实现 RTOS。当然我们开发的时候其实不用这样做&#xff0c;现在尝试实现只是为了更好地理解原理。 RTOS 的核心就是刚才在研究的问题&#xff1a;保存和恢复现场。再追其本质&#xff0c;其实就是所有寄存…

【Linux】 文件类型和访问权限

执行 ls -l &#xff08;或者&#xff1a;ll &#xff09; 指令查看文件的具体属性。 示例&#xff1a; drwxr-xr-x. 2 root root 33 10月 7 11:27 test2 看图说话&#xff1a; 下面是示例分解图 第一列的字符表示文件或目录的类型和权限。 第一个字符表示文件类型 例如&…

局域网内网管理软件有哪些功能?(局域网内网管理软件有哪些)

局域网&#xff08;LAN&#xff09;是指在一个小范围内&#xff08;如一个办公室、一个楼层或者一个大楼&#xff09;的计算机网络。随着互联网和科技的快速发展&#xff0c;局域网在企业、学校和个人生活中的应用越来越广泛。局域网内网管理软件是一种专门用于监控和控制局域网…

「天锐绿盾」——数据防泄露(智能透明加密保护)企业加密软件

天锐绿盾是一款专业的企业级加密软件&#xff0c;提供专业版、行业增强版和旗舰版&#xff0c;分别针对不同的用户需求。 PC访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 天锐绿盾数据防泄密模块&#xff0c;采取系统底…

【手绘 | 日漫风】从临摹开始控笔,线条,再到人体

博主&#xff1a;_LJaXi 专栏&#xff1a; Unity | 横版游戏开发 手绘入门 控笔 排线起稿方式九宫格起稿五官起稿专业起稿 握笔姿势三角握持姿势拇指指握姿势 勾线建议注意对于人体 控笔 排线 在绘画过程中&#xff0c;可以使用铅笔控制笔触的方向、压力和角度&#xff0c;以获…

tf卡损坏怎么修复恢复?

TF卡是一种极其微小的数据储存卡&#xff0c;常见于手机、行车记录仪、微型相机中。因为TF卡不具备读写保护功能&#xff0c;所以一旦发生损坏就会非常麻烦。今天小编就给大家介绍一下&#xff0c;TF卡突然损坏什么原因&#xff0c;TF卡损坏怎么办一招帮你修复。 一、TF卡突然损…

upload-labs靶场通关

文章目录 Pass-01 前端检测&#xff08;JS检测&#xff09;1.1 原理分析1.2 具体问题具体分析1.3 实验 Pass-02 后端检测&#xff08;MIME检测&#xff09;2.1 原理分析2.2 具体问题具体分析2.3 实验 Pass-03 后端检测&#xff08;黑名单绕过&#xff0c;特殊后缀名&#xff09…

DataX和dataX-web 集群部署及使用

&#x1f4d1; DataX和dataX-web 集群部署及使用 一 . 安装前准备 DataX 是一个异构数据源离线同步工具&#xff0c;致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX 采用 框架 插件 的模式…

【Proteus仿真】【STM32单片机】智能饮水机

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用OLED液晶、按键、语音播放模块、DS18B20温度传感器、加热器和水泵等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示温度、温度阈值&a…

【Linux】 ls命令使用

ls&#xff08;英文全拼&#xff1a; list directory contents&#xff09;命令用于显示指定工作目录下之内容&#xff08;列出目前工作目录所含的文件及子目录)。 ls命令 -Linux手册页 著者 由Richard M.Stallman和David MacKenzie撰写。 语法 ls [-alrtAFR] [name...] ls命…

众佰诚:抖音开网店新手怎么做才能做起来

抖音作为国内最热门的短视频平台&#xff0c;其商业价值也日渐凸显。许多商家和个体经营者开始在抖音上开设网店&#xff0c;以此为新的销售渠道。那么&#xff0c;对于新手来说&#xff0c;如何才能在抖音上成功运营网店呢? 首先&#xff0c;明确经营定位。每个电商平台都有其…

云服务器可以做什么?分享阿里云服务器的十种玩法

阿里云服务器可以干什么&#xff1f;服务器的用途有很多&#xff0c;常见的有网站、小程序、视频服务器、手机APP等&#xff0c;例如微信基于腾讯云服务器&#xff0c;淘宝基于阿里云服务器&#xff0c;阿里云百科aliyunbaike.com来说下阿里云服务器十大用途&#xff1a; 目录…

理解C++四种强制类型转换

理解C强制类型转换 文章目录 理解C强制类型转换理解C强制转换运算符1 static_cast1.1. static_cast用于内置数据类型之间的转换1.2 用于指针之间的转换1.3 用于基类与派生类之间的转换 2. const_cast2.1示例12.2 示例2——this指针 3.reinterpret_cast3.1 示例1 4.dynamic_cast…