行业知识
力扣--动态规划152.乘积最大子数组
2026-11-04 21:40:09
来源:互联网转载
index.php/tags-41973.html" >���路分析:
- 使用动态规划,定义一个二维数组dp,其中dp[i][0]表示以第i个元素结尾的乘积最大子数组的乘积,dp[i][1]表示以第i个元素结尾的乘积最小子数组的乘积。
- 初始化dp数组的第一个元素为数组的第一个元素。
- 遍历数组,更新dp数组的值,分别计算以当前元素结尾的乘积最大和最小子数组的乘积。
- 初始化结果为负无穷,然后遍历dp数组的第一列,找出乘积最大的值。
- 返回乘积最大子数组的乘积作为结果。
class Solution {public: // 函数用于计算数组中乘积最大的子数组 int maxProduct(vector& nums) { // 获取数组大小 int n = nums.size(); // dp数组,dp[i][0]表示以第i个元素结尾的乘积最大子数组的乘积, // dp[i][1]表示以第i个元素结尾的乘积最小子数组的乘积 vector dp(n, vector(2, 0)); // 初始化dp数组的第一个元素 dp[0][0] = dp[0][1] = nums[0]; // 遍历数组,计算dp数组的值 for (int i = 1; i
下一篇:服务器领地怎么弄?