作者:前端小王hs
阿里云社区博客专家/清华大学出版社签约作者✍/CSDN百万访问博主/B站千粉前端up主
题库:力扣
题目序号:1672(简单)
题目:最富有客户的资产总量
给你一个m x n
的整数网格accounts
,其中accounts[i][j]
是第i
位客户在第j
家银行托管的资产数量。返回最富有客户所拥有的资产总量。
客户的资产总量就是他们在各家银行托管的资产数量之和。最富有客户就是资产总量最大的客户。
示例 1:
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6 。
示例 2:
输入:accounts = [[1,5],[7,3],[3,5]]
输出:10
解释:
第 1 位客户的资产总量 = 6
第 2 位客户的资产总量 = 10
第 3 位客户的资产总量 = 8
第 2 位客户是最富有的,资产总量是 10
解题思路:
其实初次看到题目是有点云里雾里的,但细看还是挺简单的,就是提供一个二维数组,然后计算数组中的每一项,并求出最大值
那么思路也非常简单,分为三步
①计算出数组内每一个数组的总值
②把这些总值放进一个数组
③进行比较,得出最大值
那么①的步骤就是要设计一个函数,去计算每一项数组的总值,例如传入第1
个数组,计算数组[1][0]+数组[1][1]+...
,其实可以看到1
是不变的,就是传入二维数组的某一个下标是不变的,然后在函数里去通过for循环计算相加结果即可
步骤②就是定义一个数组,然后push
,这非常简单
步骤③就是设计一个求最大值的函数,那么可通过遍历的形式去比较,想把第一项设为最大值,然后往后遍历,找到比第一项大的就进行替换,这是一个很常规的比较思路
解题代码:
function maximumWealth(accounts: number[][]): number {
// 先计算每个[x,y]的总和,再生成一个数组
function sum(i:number):number{
let sumCount:number = 0
for(let j=0;j<accounts[i].length;j++){
sumCount += accounts[i][j]
}
return sumCount
}
let arr:number[] = []
// 生成一个数组
for(let i = 0;i<accounts.length;i++){
let res = sum(i)
arr.push(res)
}
// 求出数组的最大值
function findMaxNumberInArr(numbers:number[]):number {
let max = numbers[0]; // 假设数组的第一个元素是最大的
for (let i = 1; i < numbers.length; i++) {
if (numbers[i] > max) {
// 如果找到更大的数字,则更新最大值
max = numbers[i];
}
}
return max
}
let res = findMaxNumberInArr(arr)
return res
};
解题过程示例:
略