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
示例 3:
輸入:accounts = [[2,8,7],[7,1,3],[1,9,5]]
輸出:17
題解直接想到的是最簡單的解法是雙重遍歷,具體見**注釋。
class solution
// 取max(res, t)
res = math.max(res, t);
}// 返回結果
return res;
}}
0 ms
時間複雜度:
\(o(mn)\),其中m為行數,n為列數。
另外看到了另一種相似的解法:
class solution
accounts[0][0] = math.max(accounts[0][0], accounts[i][0]);
} return accounts[0][0];
}}
這種寫法是不額外設定新變數存放結果,而是直接用現有陣列的空閒位置作為儲存空間,可以省出兩個額外的變數空間。表面上看的確如此,但是通過測試發現,兩種寫法對記憶體的消耗基本一致。
紅線之上的是第一種借助變數存放結果的寫法,紅線之下的是第二種直接利用陣列空間存放結果的寫法,通過資料上的表現來看,第二種寫法的平均時間消耗和平均記憶體消耗甚至不如第一種寫法,或許這是由於leetcode的判題機制導致的,或許是有其他原因。
也許其他原因包含底層的jvm處理優化的結果,但我想這或許依然是奧卡姆剃刀定律的表現,往往簡單的方法在簡單的結構上會發揮的更高效。
LeetCode 1672 最富有客戶的資產總量
給你乙個m x n的整數網格accounts,其中accounts i j 是第i 位客戶在第j家銀行託管的資產數量。返回最富有客戶所擁有的資產總量。客戶的資產總量就是他們在各家銀行託管的資產數量之和。最富有客戶就是資產總量最大的客戶。示例 1 輸入 accounts 1,2,3 3,2,1 輸出 ...
1672 最富有客戶的資產總量
1672.最富有客戶的資產總量 給你乙個 m x n 的整數網格 accounts 其中 accounts i j 是第 i 位客戶在第 j 家銀行託管的資產數量。返回最富有客戶所擁有的 資產總量 客戶的 資產總量 就是他們在各家銀行託管的資產數量之和。最富有客戶就是 資產總量 最大的客戶。示例 1...
1672 最富有客戶的資產總量
給你乙個 m x n 的整數網格 accounts 其中 accounts i j 是第 i 位客戶在第 j 家銀行託管的資產數量。返回最富有客戶所擁有的 資產總量 客戶的 資產總量 就是他們在各家銀行託管的資產數量之和。最富有客戶就是 資產總量 最大的客戶。示例 1 輸入 accounts 1,2...