我正在尝试在类似的2d数组中获得最大输出输入: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
您需要在内部循环之前重新初始化数组的和计数器:
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
将被设置为矩阵中的一个元素。稍后,它只是与其他矩阵元素进行比较。
var maximumWealth = function (accounts) {
let a = accounts.map((e) => e.reduce((a, b) => a + b))
return Math.max(...a)
};