本文主要是介绍TypeScript算法每日一题:最富有客户的资产总量(1672),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者:前端小王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 = 0for(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
};
解题过程示例:
略
这篇关于TypeScript算法每日一题:最富有客户的资产总量(1672)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!