跳至主要內容

1672. 最富有客户的资产总量


1672. 最富有客户的资产总量

🟢   🔖  数组 矩阵  🔗 力扣open in new window LeetCodeopen in new window

题目

You are given an m x n integer grid accounts where accounts[i][j] is the amount of money the i​​​​​​​​​​​th​​​​ customer has in the j​​​​​​​​​​​th​​​​ bank. Return the wealth that the richest customer has.

A customer's wealth is the amount of money they have in all their bank accounts. The richest customer is the customer that has the maximum wealth.

Example 1:

Input: accounts = [[1,2,3],[3,2,1]]

Output: 6

Explanation:

1st customer has wealth = 1 + 2 + 3 = 6

2nd customer has wealth = 3 + 2 + 1 = 6

Both customers are considered the richest with a wealth of 6 each, so return 6.

Example 2:

Input: accounts = [[1,5],[7,3],[3,5]]

Output: 10

Explanation :

1st customer has wealth = 6

2nd customer has wealth = 10

3rd customer has wealth = 8

The 2nd customer is the richest with a wealth of 10.

Example 3:

Input: accounts = [[2,8,7],[7,1,3],[1,9,5]]

Output: 17

Constraints:

  • m == accounts.length
  • n == accounts[i].length
  • 1 <= m, n <= 50
  • 1 <= accounts[i][j] <= 100

题目大意

给你一个 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

示例 3:

输入: accounts = [[2,8,7],[7,1,3],[1,9,5]]

输出: 17

提示:

  • m == accounts.length
  • n == accounts[i].length
  • 1 <= m, n <= 50
  • 1 <= accounts[i][j] <= 100

解题思路

  1. 遍历客户资产数组 accounts
  2. 对每个客户资产 row 使用 reduce 方法计算总和。
  3. 使用 Math.max 来记录最大资产值。
  4. 最后返回最大资产值。

复杂度分析

  • 时间复杂度O(m * n)
    • 外层遍历 accounts 的每一行,复杂度为 O(m)
    • 每行使用 reduce 求和,复杂度为 O(n)
    • 因此,总时间复杂度为 O(m * n)
  • 空间复杂度O(1),没有使用额外的数据结构。

代码

/**
 * @param {number[][]} accounts
 * @return {number}
 */
var maximumWealth = function (accounts) {
	let maxWealth = 0;
	for (let row of accounts) {
		maxWealth = Math.max(
			maxWealth,
			row.reduce((acc, cur) => acc + cur, 0)
		);
	}
	return maxWealth;
};