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

image.png

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情

测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。

怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~

一、题目描述:

  • 题目内容

image.png

  • 题目示例

image.png

  • 题目解析

    • 本题给出一个二维数组accounts参数。
    • accounts、accounts[i]的长度都在[1,51]
    • accounts[i][j] 元素是int,范围在[1,101]

二、思路分析:

我们拿到本题,该题给出的一个二维数组accounts,要求求出accounts[i]中元素和最大的。

看完示例,我们脑袋里马上就有了方法,模拟求和:

  • 使用两个for循环进行遍历二维数组accounts.
  • 第一层for循环取出二维数组accounts每一行的元素列表accounts[i]
  • 第二层for循环对accounts[i]取出里面的每一个元素accounts[i][j]
  • 使用一个临时变量Sum对account[i]里的元素进行求和运算
  • 对每一次的求和Sum 与ans进行比较,ans每一次取最大值
  • 直到遍历完所有的accounts的元素,返回ans

根据以上思路,我们使用两个for循环就能快速实现该题,代码如下:

ans = 0
for i in range(len(accounts)):
    
    Sum = 0
    for j in range(len(accounts[i])):

        Sum = Sum + accounts[i][j]
        ans = max(ans,Sum)
return ans
复制代码

两个for循环虽然能解答该题,但是运行时间非常慢了。那么还有其他方法吗?

  • 我们可以对上述方法进行优化,只用使用一个for循环
  • 一个for循环取出accounts的元素,也就是account[i]
  • 直接使用求和函数sum()对accounts[i]求和
  • 临时变量ans 与 sum(account[i]) 最大值比较
  • 直到遍历完整改accounts数组,返回结果ans
ans = 0

for i in accounts:
            
    ans = max(ans,sum(i))

return ans
复制代码

最后,其实解答该题我们完全可以只用一行代码就可以解决

  • 推导式
return max(sum(i) for i in accounts)
复制代码

三、总结:

我们只使用一个for循环,提交代码,AC记录如下:

image.png

时间复杂度O(N),accounts数组的长度 空间复杂度O(1)

以上是本期内容,欢迎大佬们点赞评论,下期见~~~

猜你喜欢

转载自juejin.im/post/7086440567713824804