(57)最富有客户的资产总量


1. 每日一言

Care and diligence bring luck.
谨慎和勤奋,带来好运气。


2. 题目

题目链接:最富有客户的资产总量

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


3. 解题思路

3.1 法一

  1. 使用 malloc 为一个大小为 accountsSize 的整型数组 arr 分配了内存空间,并使用 memset 将数组初始化为 0。用于保存每个一维数组的和。
  2. 使用两重循环遍历二维数组。外层循环遍历每个一维数组,内层循环遍历当前一维数组的每个元素,将每个一维数组的元素值累加到 arr[i] 中。
  3. 遍历一维数组求和得到的结果数组 arr,找到其中的最大值,并将最大值保存到变量 max 中。
  4. 函数最后返回找到的最大值 max。

3.2 法二

  1. 对于每个一维数组(代表一个人的财富情况),遍历其所有元素并对其进行累加,得到每个人的总财富 max1。
  2. 在内层循环中,将每个人的总财富与当前已经找到的最大财富 max 进行比较,如果大于 max,则更新 max 为当前人的总财富 max1。
  3. 函数返回值为 max,它代表了所有人中的最大财富。

4. 代码

4.1 法一

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize) {
	//动态申请一个数组arr,用来存放每一行的和
    int *arr = (int*)malloc(sizeof(int)*accountsSize);
    
    //将arr数组初始化
    memset(arr,0,accountsSize*sizeof(int));
    
    //将每一行的和存放到arr中
    for(int i = 0; i < accountsSize; i++) {
        for(int j = 0;j < *accountsColSize; j++) {
            arr[i] += accounts[i][j];
        }
    }

	//max用来存放最富有的人的钱数
    int max = arr[0];
    
	//寻找谁最富有,将钱数给到max
    for(int i = 1; i < accountsSize; i++) {
        if(max < arr[i]) {
            max = arr[i];
        }
    }
    
    //返回max
    return max;
}

4.2 法二

int maximumWealth(int** accounts, int accountsSize, int* accountsColSize) {
	//max用来存放最富有的人的钱数
    int max = accounts[0][0];
    for(int i = 0; i < accountsSize; i++) {
        int max1 = 0;//max1用来存放当前这个人的总钱数
        for(int j = 0;j < *accountsColSize; j++) {
            max1 += accounts[i][j];

            if(max < max1) {
                max = max1;
            }
        }
    }

    return max;
}

5. 结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月临水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值