首页 > 编程语言 >TypeScript算法每日一题:最富有客户的资产总量(1672)

TypeScript算法每日一题:最富有客户的资产总量(1672)

时间:2024-06-09 19:59:35浏览次数:34  
标签:TypeScript number 算法 客户 let 数组 accounts 总量 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 = 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
};

解题过程示例:

标签:TypeScript,number,算法,客户,let,数组,accounts,总量,1672
From: https://blog.csdn.net/weixin_44001222/article/details/139422131

相关文章

  • 代码随想录算法训练营第十四天|二叉树递归遍历、迭代遍历、统一迭代
    二叉树遍历二叉树主要有两种遍历方式:深度优先遍历:先往深走,遇到叶子节点再往回走。深度优先遍历又分:前序遍历(中、左、右)中序遍历(左、中、右)后序遍历(左、右、中)广度优先遍历:一层一层的去遍历。(后面讲)递归遍历递归三要素确定递归函数的参数和返回值:确定哪些参数是递......
  • 模拟退火(Simulated Annealing, SA)算法是
    模拟退火(SimulatedAnnealing,SA)算法是一种概率型启发式搜索算法,用于寻找优化问题中的全局最优解。它受到冶金学中退火过程的启发,通过模拟金属冷却过程中的退火过程来寻找问题的最优解。以下是使用MATLAB实现模拟退火算法的一个简单示例。这个例子中,我们将使用模拟退火算法来......
  • 单链表相关面试算法题汇总
    技巧汇总快慢指针先找到中间节点如果要调用next..确保当前节点不为空。依次类推。.next不为空是否有环。走过的路。重新走。互相走。画图,分解,暴力法。用hashset插入法翻转。packagemainimport( "fmt" ."github.com/isdamir/gotype")funcAddLNode(h1,h2*L......
  • LeetCode 算法:除自身以外数组的乘积c++
    原题链接......
  • 【数据结构·队列】链队列(带头结点)模板简单应用算法设计:长整数加法计算
    目的:使用C++模板设计链队列的抽象数据类型(ADT)。并在此基础上,使用链队列ADT的基本操作,设计并实现简单应用的算法设计。内容:(1)请参照单链表的ADT模板,设计链队列的抽象数据类型。(由于该环境目前仅支持单文件的编译,故将所有内容都集中在一个源文件内。在实际的设计中,推荐将抽象类及......
  • 基于OpenCV的SIFT算法实现图像拼接(全景图像)
    一、SIFT算法尺度不变特征转换(Scale-invariantfeaturetransform或SIFT)是一种机器视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变数,此算法由DavidLowe在1999年所发表,2004年完善总结。SIFT算法的实质是在不同的尺度......
  • 基于粒子群算法优化BP神经网络的PID控制算法(Matlab代码实现)
     ......
  • HNUCM-2024年春季学期《算法分析与设计》练习14
     问题A:1的个数题目描述输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入 输入一个整数(int类型)。输出这个数转换成2进制后,输出1的个数。样例输入 Copy5样例输出 Copy2#include<stdio.h>intmain(){intn,s=0;scanf("%d",&......
  • [无监督学习] 14.详细图解k-means 算法
    k-means算法把相似的数据汇总为簇的方法叫作聚类。k-means算法是一种聚类算法,该算法非常简单,所以被广泛应用于数据分析。概述k-means算法是一种有代表性的聚类算法。由于该算法简单易懂,又可以用于比较大的数据集,所以在市场分析和计算机视觉等领域得到了广泛的应用。我......
  • C++的算法:欧拉道路与欧拉回路
            在图论中,欧拉道路和欧拉回路是两个重要的概念,它们分别描述了在图中找到一条经过所有边且每条边只经过一次的道路或回路的可能性。欧拉道路和欧拉回路在实际应用中有着广泛的用途,如路线规划、电路设计等。        欧拉道路:通过图中每条边恰好一次且仅......