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

Leetcode 3584. Maximum Product of First and Last Elements of a Subsequence

  • Leetcode 3584. Maximum Product of First and Last Elements of a Subsequence
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3584. Maximum Product of First and Last Elements of a Subsequence

1. 解题思路

这一题我们只需要从左往右依次遍历一下所有的元素,考察其作为子序列的起点位置 i i i时,所能取到的最大值即可。显然,要组成一个长为 m m m的序列,那么其构成的子序列的最后一个元素位置至少为 i + m − 1 i+m-1 i+m1,我们只需要考察从该位置开始的最大和最小元素即可。

因此,我们只需要提前先计算出来每一个位置的右侧最大元素和最小元素即可。

唯一一个特殊情况是,当 m = 1 m=1 m=1时,此时子序列有且仅有一个元素,此时上述情况不成立,但我们只需要找出原数组当中绝对值最大的元素即可,答案即为其平方数。

2. 代码实现

给出python代码实现如下:

class Solution:def maximumProduct(self, nums: List[int], m: int) -> int:if m == 1:return max([abs(x) for x in nums])**2n = len(nums)right_min, right_max = deepcopy(nums), deepcopy(nums)for i in range(n-2, -1, -1):right_min[i] = min(nums[i], right_min[i+1])right_max[i] = max(nums[i], right_max[i+1])ans = -math.inffor i in range(n-m+1):x = nums[i]y1, y2 = right_min[i+m-1], right_max[i+m-1]ans = max(ans, x*y1, x*y2)return ans

提交代码评测得到:耗时812ms,占用内存33.05MB。

http://www.xdnf.cn/news/14365.html

相关文章:

  • 139. 单词拆分
  • (LeetCode 每日一题) 1432. 改变一个整数能得到的最大差值(贪心)
  • React组件通信——context(提供者/消费者)
  • MySQL常用函数详解之字符串函数
  • nohz_full 参数对内核软硬锁检测机制的影响分析
  • 嵌入式学习笔记 - SH79F6441 堆栈栈顶可以是片上内部RAM(00H-FFH)的任意地址怎么理解
  • (91)课113:存储函数与存储过程的区别总结。
  • DP刷题练习(三)
  • Golang 解大整数乘法
  • Python Pillow 库详解文档
  • pythton 语言的独特语法
  • Axure应用交互设计:多种类型元件实现新增中继器数据
  • 【springcloud】快速搭建一套分布式服务springcloudalibaba(五)
  • Python爬虫实战:研究Mr. Queue相关技术
  • 【Java SE】类和对象(3)
  • Kafka源码P2-生产者缓冲区
  • 基于大模型预测缺铁性贫血的综合技术方案大纲
  • 记录一次 Oracle 表空间不足问题的解决过程
  • Linux进程间通信(上)
  • Proteus8.17-LCD12864液晶屏幕仿真模型
  • 华为OD机试-考勤信息-双指针(JAVA 2025B卷)
  • AI是什么?大模型、语料、训练、推理、机器学习、神经网络等专业名词如何关联
  • 基于docker的nocobase本地部署流程
  • CPU的异常处理
  • PC16550 UART接收中断处理完整示例代码
  • 134-135Elements-UI组件库
  • 03- 六自由度串联机械臂(ABB)动力学分析
  • SoftMax 函数
  • Unity基础-范围检测
  • Redis全面深入学习目录