首页 > 解决方案 > 我试图在二维向量中获得最大输出

问题描述

我正在尝试在二维数组中获得最大输出,例如 输入:accounts = [[1,2,3],[3,2,1]] 输出:6 解释:第一个客户拥有财富 = 1 + 2 + 3 = 6第二个客户的财富 = 3 + 2 + 1 = 6 两个客户都被认为是最富有的,每个客户的财富为 6,因此返回 6。

当前输入 = [[1,2,3],[3,2,1]];

当前输出 = 12;

预期输出 = 6;

我不明白为什么它给了12。

class Solution {
public:
    int maximumWealth(vector<vector<int>>& accounts) 
    {
        int max , temp = 0;
        for(int i=0;i<accounts.size();i++)
        {
            for(int j=0;j<accounts[i].size();j++)
            {
                temp = temp + accounts[i][j];
            }
            if(temp > max)
            {
                max = temp;
            }
        }
        return max;
    }
    };

更新:

现在输入:[[1,2,3],[3,2,1]]

当前输出:1849672928

预期输出:6

标签: c++

解决方案


您需要在内部循环之前重新初始化数组的总和计数器:

for(int i=0;i<accounts.size();i++)
{
    temp = 0; // re-initialise before taking every array/account's sum here
    for(int j=0;j<accounts[i].size();j++)
    {
        temp = temp + accounts[i][j];
    }
    if(temp > max)
    {
        max = temp;
    }
}

此外,您应该将max变量初始化为一个非常小的值,例如,INT_MIN或者只是 0(如果您没有负元素)。

#include <climits>
int max = INT_MIN, temp = 0;

我们将其设置为最小值,以便在第一次比较时,保证max将设置为矩阵内的元素之一。稍后,它只是与其他矩阵元素的比较。


推荐阅读