2023-10-13|閱讀時間 ‧ 約 22 分鐘

1672. Richest Customer Wealth (最富有客戶的資產總量)


英文版點我中文版點我


↑看個小廣告,支持好內容↑



Iteration

accounts 會是一個巢狀陣列 (每一項自身也是陣列,代表某用戶的各項資產),要找的大富翁即是陣列總和值最大者,做個雙重迴圈就能解了:

// 對於每一個客戶 i (accounts.length)​:

1. 遍歷他的各項資產 (accounts[i].length)
2. 加總,並與當前的最大值比較


這段程式你一定會寫,但我想多提一個「迭代」的概念。

所謂迭代,就是一個逐項運作、每次更新結果的過程

迭代的核心就是「每回合結束後都會更新結果」,上述的例子經歷了四次回合,當前最大值依序由 1、7、7、9 被更新覆蓋,當迭代一結束,最大值也找到了。

迭代的寫法:

陣列.reduce((累積值, 陣列項)=>{兩者要做的運算}, 初始值)

// 迴圈
let max=0;
for(let i=0; i<arr.length; i++){
 max=Math.max(max, arr[i])
}
return max;

// 迭代
// 假設初始 max=0,每回合將 max 與陣列項相比,留下更大者
return arr.reduce((max, cur)=>Math.max(max, cur), 0);


相比於迴圈而言,程式碼是不是簡潔很多呢?試著用迭代做這一題看看!

參考程式碼:

var maximumWealth = function(accounts) {
let max=0;
for(let i=0; i<accounts.length; i++){
// 取得第i位客戶的資產總額,並與當前最大值(大富翁)比較
let sum=accounts[i].reduce((acc, curr)=>acc+curr, 0);
max=Math.max(max, sum);
}
return max;
};



  • 本題分類標籤:ArrayMatrix
  • 本題正解率=87.5%

❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 7 篇刷題筆記,完整解題索引看這裡 → Here

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.