Seabiscuit. 2023-10-27 15:53 采纳率: 0%
浏览 3

发生了溢出问题,但不清楚为什么

下面这段代码,不断的提示溢出。应该是两个for循环处溢出了。但是不清楚为什么。
烦请各位朋友帮忙答个疑解个惑。

class Solution {
public:
    int maxArea(int h, int w, vector<int>& horizontalCuts, vector<int>& verticalCuts) 
    {
        sort(horizontalCuts.begin(), horizontalCuts.end());
        sort(verticalCuts.begin(), verticalCuts.end());
        int length_w = verticalCuts.size();
        int length_h = horizontalCuts.size();
    
        int max_w = verticalCuts[0], max_h = horizontalCuts[0];
        int i = 1, j = 1;
   
        for(i = 1; i < length_h; i++)
            max_h = max(horizontalCuts[i] - horizontalCuts[i - 1], max_h);
        for(j = 1; j <= length_w; j++)
            max_w = max(verticalCuts[i] - verticalCuts[i - 1], max_w);
      
        max_w = max(w - verticalCuts[length_w - 1], max_w);
        max_h = max(h - horizontalCuts[length_h - 1], max_h);

        return (((long long)(max_h * max_w)) % mod);
    }
   
private:
    static constexpr int mod = 1e9 + 7;
};

  • 写回答

2条回答 默认 最新

  • 普通网友 2023-10-27 16:03
    关注

    修正后的代码中,使用 std::max 函数来计算最大值,避免了溢出的问题。希望这次能够得到正确的结果。如果还有其他问题,请随时提问。

    
    #include <vector>
    #include <algorithm>
     class Solution {
    public:
        int maxArea(int h, int w, std::vector<int>& horizontalCuts, std::vector<int>& verticalCuts) 
        {
            std::sort(horizontalCuts.begin(), horizontalCuts.end());
            std::sort(verticalCuts.begin(), verticalCuts.end());
            int length_w = verticalCuts.size();
            int length_h = horizontalCuts.size();
             int max_w = verticalCuts[0], max_h = horizontalCuts[0];
            int i = 1, j = 1;
             for(i = 1; i < length_h; i++)
                max_h = std::max(horizontalCuts[i] - horizontalCuts[i - 1], max_h);
            for(j = 1; j < length_w; j++)
                max_w = std::max(verticalCuts[j] - verticalCuts[j - 1], max_w);
             max_w = std::max(w - verticalCuts[length_w - 1], max_w);
            max_h = std::max(h - horizontalCuts[length_h - 1], max_h);
             return (((long long)(max_h * max_w)) % mod);
        }
     private:
        static constexpr int mod = 1e9 + 7;
    };
    
    评论

报告相同问题?

问题事件

  • 修改了问题 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境