文章

156

粉丝

195

获赞

0

访问

28.4k

头像
2026年 408 冲刺预测 3 套卷(二) - 第41题回答
数据结构
发布于2025年12月7日 17:55
阅读数 41

1)

  1. 若 n == 0 直接返回。

  2. res[0] = A[0] * A[0]

  3. 初始化 maxSoFar = A[0]minSoFar = A[0]

  4. 循环 i = 1 到 n-1
    a. 计算 prod1 = A[i] * maxSoFarprod2 = A[i] * minSoFarprod3 = A[i] * A[i]
    b. res[i] = max(prod1, prod2, prod3)
    c. 更新 maxSoFar = max(maxSoFar, A[i])
    d. 更新 minSoFar = min(minSoFar, A[i])

2

#include <algorithm> // for max, min

void calMulMaxLeft(int A[], int res[], int n) {
    if (n == 0) return;
    
    // 初始化第一个元素
    res[0] = A[0] * A[0];
    int maxSoFar = A[0];
    int minSoFar = A[0];
    
    for (int i = 1; i < n; ++i) {
        // 候选乘积
        int prod1 = A[i] * maxSoFar;
        int prod2 = A[i] * minSoFar;
        int prod3 = A[i] * A[i];
        
        // 取最大值
        int maxProd = prod1;
        if (prod2 > maxProd) maxProd = prod2;
        if (prod3 > maxProd) maxProd = prod3;
        res[i] = maxProd;
        
    ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发