动态规划----8.乘积最大子数组

乘积最大子数组:思路、实现与深度剖析 max_dp[i]:表示以第i个元素结尾的连续子数组的最大乘积。min_dp[i]:表示以第i个元素结尾的连续子数组的最小乘积。这样定义的原因是,当前元素的乘积结果不仅依赖于之前的最大乘积,也可能依赖于最小乘积(当当前元素为负数时 )。全面覆盖情况:通过同时维护最大和最小乘积,充分考虑了负数、正数和零对结果的影响,确保找到正确的最大乘积子数组,解决问题的完整性高。时间效率高:时间复杂度为O(n)n是数组长度。只需一次遍历数组,就能计算出所有状态,对于题目中数组长度最大为2 * 10^4。 阅读详情

/**

        注意,乘上一个负数会让小的变大,大的变小,保存max的同时min也需要保存

        maxProduct、minProduct 当前最大、最小乘积 res记录结果

*/

class Solution {
    /**
        注意,乘上一个负数会让小的变大,大的变小,保存max的同时min也需要保存
        maxProduct、minProduct 当前最大、最小乘积 res记录结果
    */
    public int maxProduct(int[] nums) {
        int maxProduct = nums[0], minProduct = nums[0];
        int res = nums[0];

        for(int i = 1; i < nums.length; i++) {
            if(nums[i] < 0) {
                int temp = maxProduct;
                maxProduct = minProduct;
                minProduct = temp;
            }

            maxProduct = Math.max(nums[i], maxProduct * nums[i]);
            minProduct = Math.min(nums[i], minProduct * nums[i]);

            res = Math.max(res,maxProduct);
        }

        return res;
    }
}

峰值电流模式CCM BUCK的传递函数推导 电流内环闭环传递函数: Gci(s)=i^L(s)v^comp(s)=FmGid(s)1+KRiHe(s)FmGid(s)=1Ri11+s[mcL+(0.5VIN−Vo)RiVINRifSW]+s21(πfSW)2 G_{ci}(s)=\frac{\hat i_{L}(s)}{\hat v_{comp}(s)}=\frac {F_mG_{id}(s)}{1+KR_iH_e(s)F_mG_{id}(s)}=\frac{1}{R_i}\frac{1}{1+s[\frac{m_cL+(0.5V_{IN}-V_o) 阅读详情

相关推荐

STM32CubeMX——循迹传感器TCRT5000的使用

前言 人生如逆旅,我亦是行人。 ————苏轼《临江仙·送钱穆父》 一、介绍 TCRT5000描述:(带有晶体管输出的反射光学传感器) TCRT5000是一种反射式光学传感器,它包括一个红外发射器和一个3.5mm引线封装的光电晶体管,可阻挡可见光。还具有1mA 典型被测输出电流,2.5mm峰值工作距离,可应用传感与仪表,工业等行业。 TCRT5000具有紧凑的结构,其中发射光源和探测器布置在同一方向,通过使用来自物体的反射红外光束来感知物体的存在。工作波长为950毫米,探测器由光电晶体管组成

W_Oilpicture的博客 1万+

华为机试模拟题8复盘:字符串、动态规划与拓扑排序实战

在编程机试中,字符串处理、动态规划和图论拓扑排序是出现频率极高的核心考点。字符串解压类题目往往需要借助栈处理嵌套结构,边界条件与拼接顺序是关键;动态规划则重在状态定义与转移方程的推导,例如连续子数组最大乘积需同时维护最大最小值以应对负数翻转;而任务调度问题通常建模为有向图,通过拓扑排序检测环并输出合法顺序。掌握这些基础算法的底层原理,不仅能提升编码效率,更能增强对输入输出陷阱和边界条件的敏感度,广泛应用于华为OD机试、校招笔试及各类技术评测。以华为机试模拟题8为切入点,完整拆解三题对应的算法思路、代码实现与

weixin_33423874的博客 211

无人自行车平衡控制:最小二乘法动态零点拟合实践

本文探讨了无人自行车平衡控制中动态零点的重要性及实现方法。通过最小二乘法拟合车头角度与ROL值的线性关系,解决了固定零点在转向时导致的稳定性问题。实践表明,动态零点拟合能显著提升系统平衡稳定性并降低能耗。

uran的专栏 661

刷题记录 HOT100 动态规划-8:​152. 乘积最大子数组​

难度:中等给你一个整数数组nums,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。6子数组 [2,3] 有最大乘积 6。0结果不能为 2, 因为 [-2,-1] 不是子数组。

weixin_44610684的博客 436

考完CAIE认证一年后,谈谈它对我的职业的真实影响(干货)

大门,让面试官愿意给你机会,但进门之后的发展,还得靠持续的学习和项目积累。说实话,当时的心态是“考都考了,总比闲着强”,对这张证书能带来什么实际价值,心里并没有底。这种广泛的生态认可,让这张证书的“流通性”变得很强——无论跳槽还是在原公司发展,它都是一个被市场验证过的能力证明。对我个人而言,虽然没跳槽,但在年度调薪和争取内部项目时,持证经历也成了一个有力的“加分项”。这种巨大的薪资差距,恰恰反映了市场对“能落地、懂技术”的深度人才的渴求。考完证后的这一年,我看到了两条清晰的职业发展路径在自己面前展开。

qq_16014487的博客 817

别再死记硬背了!用51单片机的AD/DA和PWM,亲手做个简易示波器信号发生器

本文详细介绍了如何利用51单片机的PWM和AD/DA功能制作简易示波器信号发生器。通过PWM模拟DAC输出波形,结合XPT2046 ADC进行信号测量,实现方波、三角波和正弦波的生成与显示。项目不仅成本低廉,还能帮助电子爱好者深入理解51单片机的核心功能,是理论与实践结合的绝佳案例。

weixin_28675839的博客 265

动态规划三——子数组系列

两种情况下的最⼤值,就是我们要的结果。但是,由于数组内有可能全部都是负数,第⼀种情况下的结果是数组内的最⼤值(是个负数),第⼆种情况下的 gmin == sum ,求的得结果就会是 0。虽然它没有任何相邻元素来形成翻转的比较符号,但按照题目的要求,我们需要返回一个答案,所以这里返回 1,表示数组中最长的(也是唯一的)“湍流”子数组的长度。nums[i] < 0 时,此时我们要看 g[i-1] 的值(因为负负得正,如果我们知道以 i-1 为结尾的乘积为负数的最长子数组的长度,加上 1 即可)。

2301_80224556的博客 1325

宝塔面板+pbootCMS建站全流程:从服务器选购到上线优化(附常见问题排查)

本文提供了一份详尽的宝塔面板与pbootCMS建站实战指南。内容涵盖从云服务器选购、宝塔面板部署与安全加固,到pbootCMS安装、权限配置、数据库连接等核心步骤。同时深入讲解了PHP环境优化、Nginx伪静态设置、缓存开启等性能与SEO优化技巧,并附有常见问题排查与后期维护建议,帮助用户高效、稳健地完成专业网站构建。

e4f5g6h的博客 661

动态规划--子数组类型

代码部分。

2401_87804979的博客 278

【人工智能】人工智能基础概念、流派、发展史

人工智能初衷就是让计算机能够像人类一样具有自我思考、自我学习、自我决策的能力。依据百度百科上对人工智能定义:人工智能是研究、开发用于模拟、扩展和延伸人的智能的理论、方法、技术及应用系统的一门新的技术学科。人工智能是研究使计算机来模拟人的某些思维过程和智能行为的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

WEL测试 1885

OpenClaw插件开发指南:扩展AI智能体的无限可能

OpenClaw插件开发指南介绍了如何扩展AI智能体的功能。该插件系统支持多种类型(功能、集成、工具、界面、工作流插件),具有模块化、低耦合等优势。开发环境需要安装SDK和工具包,通过plugin.json配置插件信息,主文件实现核心功能。API提供智能体管理、任务执行等接口,示例演示了文本处理插件的创建流程。开发者可基于此框架灵活扩展OpenClaw的能力。

一键难忘的博客 561

【动态规划】子数组问题:最大子数组和,环形子数组的最大和,乘积最大子数组,乘积为正数的最长子数组长度,最长湍流子数组,等差数列划分,单词拆分,环形字符串中唯一的子字符串

本文整理了6道动态规划相关的LeetCode题目,包括最大子数组和、环形子数组最大和、乘积最大子数组、乘积为正数的最长子数组长度、等差数列划分、最长湍流子数组以及单词拆分问题。重点分析了第8题环形字符串中唯一子字符串的解题思路:通过状态表示以i字符结尾的子串数量,利用状态转移方程判断字符连续性,最终统计26个字符结尾的最大子串数之和。该解法通过维护字符哈希表避免了重复计算,时间复杂度为O(n)。

记录了从0学习Java技术栈的日常 226

Open3D (C++) 计算点云坐标最值及其索引

使用C++版本的Open3D计算点云最值点及其对应的下标索引

点云侠的博客 731

LeetCode152:Maximum Product Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest product.For example, given the array [2,3,-2,4], the contiguous subarray [2,3] has the largest produ

768

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【个人学习||算法】动态规划

动态规划(Dynamic Programming)并不是一种具体的算法,而是一种解题思想。它通过把原问题分解为相对简单的子问题,并保存子问题的结果,从而避免重复计算。DP 解题三部曲:状态定义:dp[i] 到底代表什么?状态转移方程:dp[i] 怎么由前面的 dp 值推导出来?初始化与边界:从哪里开始“递推”?你要数清面前这一大堆散落的麦粒。正常直接数,后果就是有可能会忘记当前数到第几个了,然后大概率需要从头开始数了。实际上生活中很多人选择分开数。

qq_68339791的博客 485

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LeetCode 热题 100 Python3易懂题解(普通数组,矩阵)

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。是数组中的一个连续部分。6连续子数组 [4,-1,2,1] 的和最大,为 6。nums = [1]123这个太简单了,和洛谷的p1115一样,那个用c++写了题解可以去主页看。不要想得太复杂!!!

qq_51652391的博客 858

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【动态规划】NK刷题之DP7 连续子数组的最大乘积

这个题虽然是中等难度的题目,但对我的帮助还是挺大,让我对分治和动态规划这两种算法又有了更深的理解,分治法和动态规划这两种方法都可以AC这道题,看自己更擅长哪一种吧,我更喜欢动态规划的简洁,因为分治要注意的细节还是挺多的,容易写出bug,最后关于这篇博客有什么问题和不足,欢迎大家在评论区告诉我哦😄😄.↩︎。

wszhj_的博客 1894

动态规划经典例题:乘积最大连续子数组

题目: 思路:动态规划 fmax(i) 表示以第i个元素结尾的乘积最大子数组的乘积,fmin(i) 表示以第i个元素结尾的乘积最小子数组的乘积,这里分为最大和最小是因为数组可能存在负数,最大值乘以负数变成较小值,最小值乘以一个负数也可能变成最大值。 class Solution { public: int maxProduct(vector<int>& nums) { vector <int> maxF(nums), m...

1万+

LeetCode【0152】乘积最大子数组

题目难度:中等;数据结构:数组;应用算法:动态规划

AnFany 1161

【算法专题】动态规划之子数组和子串系列

算法专题之动态规划 - - - 子数组、子串系列(数组中连续的一段)

YoungMLet的博客 1926

LeetCode-152. 乘积最大子数组

LeetCode-152. 乘积最大子数组(中等) 题目地址:https://leetcode-cn.com/problems/maximum-product-subarray/ 文章目录LeetCode-152. 乘积最大子数组(中等)1. 题目描述及示例示例一:示例二:2. 题解和代码实现2.1 初始化2.2 状态转移方程代码实现(C++ 2022-4-8)3. 总结 1. 题目描述及示例       给你一个整数数组 nums ,请你找出数组

qq_43377337的博客 4725

动态规划题解——乘积最大子数组【LeetCode】

维度内容✅ 思路逻辑遍历数组时维护以当前位置结尾的最大/最小乘积,更新全局最大值✅ 核心技巧负数会导致最大最小翻转,必须同时维护最大值和最小值✅ 时间复杂度O(n) 一次遍历✅ 空间复杂度O(1) 使用常数变量优化。

chao_789的博客 520

动态规划-最大连续乘积子数组

最大连续乘积子序列 #include #define LENGTH 8#define min(n1, n2) (n1 > n2 ? n2 : n1)#define max(n1, n2) (n1 > n2 ? n1 : n2)double MaxProSub(double a[], int length);int main(){ double arr[LENGTH] = {-2.5, 4,

Albert__Sun的博客 1141

【动态规划】NK刷题记之DP8乘积为正数的最长连续子数组

先考虑简单的情况,假设从我遍历到当前位置不存在0这个特殊元素现在我想求出以当前位置的元素a[i]为尾项乘积为正数的最大子数组长度该如何求呢?由于上一道题的经验,我们可以知道存在负负得正的情况,变量应该定义两个定义positive这个变量表示以当前位置的元素a[i]为尾项乘积为正数的最长子数组长度定义negative这个变量表示当前位置的元素a[i]为尾项乘积为负数的最长子数组长度定义好了变量,我们只需要做3件事1.确定a[i]的正负,负数的特殊性影响着整体的符号2.知道positive和。

wszhj_的博客 874

LeetCode第152题_乘积最大子数组

给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。测试用例的答案是一个整数。是数组的连续子序列。

qq_40263592的博客 1333

【动态规划】子数组&&子串系列

在上一篇有关动态规划的博客中,谈到做这类题目的步骤,有需要的可以点这个链接:【动态规划】斐波那契额数列模型。继续分享这个模型类型的题目。

zxctsclrjjjcph的博客 1244
上一篇: 动态规划----7.最长递增子序列
下一篇: 动态规划----9.分割等和子集
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值