文章目录
- 1. 每日一言
- 2. 题目
- 3. 解题思路
- 3.1 法一
- 3.2 法二
 
- 4. 代码
- 4.1 法一
- 4.2 法二
 
- 5. 结语
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 法一
- 使用 malloc 为一个大小为 accountsSize 的整型数组 arr 分配了内存空间,并使用 memset 将数组初始化为 0。用于保存每个一维数组的和。
- 使用两重循环遍历二维数组。外层循环遍历每个一维数组,内层循环遍历当前一维数组的每个元素,将每个一维数组的元素值累加到 arr[i] 中。
- 遍历一维数组求和得到的结果数组 arr,找到其中的最大值,并将最大值保存到变量 max 中。
- 函数最后返回找到的最大值 max。
3.2 法二
- 对于每个一维数组(代表一个人的财富情况),遍历其所有元素并对其进行累加,得到每个人的总财富 max1。
- 在内层循环中,将每个人的总财富与当前已经找到的最大财富 max 进行比较,如果大于 max,则更新 max 为当前人的总财富 max1。
- 函数返回值为 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];//寻找谁最富有,将钱数给到maxfor(int i = 1; i < accountsSize; i++) {if(max < arr[i]) {max = arr[i];}}//返回maxreturn 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. 结语
请给自己些耐心,一口吃不成胖子。
 山外青山楼外楼,莫把百尺当尽头。
 保持空杯心态加油努力吧!
都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家
编程小白写作,如有纰漏或错误,欢迎指正