当前位置: 首页 > news >正文

2874. 有序三元组中的最大值 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

以中间的的点为中心,找出此点左边和右边的最大值。 

class Solution {
    public static long maximumTripletValue(int[] nums) {
        int n = nums.length;
        long maxResult = 0;
        int[] rightMax = new int[n]; 
        rightMax[n - 1] = 0;
        int currentMax = nums[n - 1];
        for (int i = n - 2; i >= 0; i--) {
            rightMax[i] = currentMax;
            if (nums[i] > currentMax) {
                currentMax = nums[i];
            }
        }
        int[] leftMax = new int[n];
        leftMax[0] = 0;
        currentMax = nums[0];
        for (int i = 1; i < n; i++) {
            leftMax[i] = currentMax;
            if (nums[i] > currentMax) {
                currentMax = nums[i];
            }
        }
        for (int j = 1; j < n - 1; j++) {
            long value = (long)(leftMax[j] - nums[j]) * rightMax[j];
            if (value > maxResult) {
                maxResult = value;
            }
        }
        
        return maxResult > 0 ? maxResult : 0;
    }
}

 

http://www.dtcms.com/a/109143.html

相关文章:

  • 全星 研发项目管理APQP 软件:驱动汽车及制造业研发升级的数字化引擎
  • 【笔记】如何使得docker desktop下载至D盘而不是C盘?
  • django REST framework(DRF)教程
  • 一文读懂数据仓库:从概念到技术落地
  • 蓝桥杯Java B组省赛真题题型近6年统计分类
  • 7-5 表格输出
  • 高速电路 PCB 设计要点一
  • 2010-2020年 省级、城市数字经济创新创业-分项指数得分与排名 -社科数据
  • vue3 中引入tinymce富文本
  • 让AI再次伟大-MCP-Server开发指南
  • LeetCode Hot100 刷题笔记(7)—— 贪心
  • WPS JS宏编程教程(从基础到进阶)-- 第三部分:JS宏编程语言开发基础
  • Linux线程概念与控制:【线程概念(页表)】【Linux线程控制】【线程ID及进程地址空间布局】【线程封装】
  • 32f4,串口1,usart.c.h2025
  • EIP-712:类型化结构化数据的哈希与签名
  • 【行测】判断推理:图形推理
  • System.arraycopy()
  • SD 重温学习笔记
  • 深入理解 Python 中的 `server.listen(backlog)`:监听队列的奥秘
  • 《深度探秘:SQL助力经典Apriori算法实现》
  • GO语言学习(17)Gorm的数据库操作
  • 两点与圆(异或神通)
  • 快速求平方根
  • 【每日一个知识点】分布式数据湖与实时计算
  • Ubuntu上离线安装ELK(Elasticsearch、Logstash、Kibana)
  • Vulkan实例教程1 - Vulkan应用程序结构(附代码)
  • node ---- 解决错误【Error: error:0308010C:digital envelope routines::unsupported】
  • 第一部分 领域驱动设计的原则与实践
  • 10.多线程
  • 【C++】第八节—string类(上)——详解+代码示例