LeetCode 1672 最富有客戶的資產總量

2022-06-21 07:48:11 字數 1623 閱讀 9762

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...