★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-gqhwvgfs-me.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
Given an m * n matrix M initialized with all 0's and several update operations.git
Operations are represented by a 2D array, and each operation is represented by an array with two positive integers a and b, which means M[i][j] should be added by one for all 0 <= i < a and 0 <= j < b.github
You need to count and return the number of maximum integers in the matrix after performing all the operations.數組
Example 1:微信
Input: m = 3, n = 3 operations = [[2,2],[3,3]] Output: 4 Explanation: Initially, M = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] After performing [2,2], M = [[1, 1, 0], [1, 1, 0], [0, 0, 0]] After performing [3,3], M = [[2, 2, 1], [2, 2, 1], [1, 1, 1]] So the maximum integer in M is 2, and there are four of it in M. So return 4.
Note:spa
給定一個初始元素所有爲 0,大小爲 m*n 的矩陣 M 以及在 M 上的一系列更新操做。code
操做用二維數組表示,其中的每一個操做用一個含有兩個正整數 a 和 b的數組表示,含義是將全部符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增長 1。orm
在執行給定的一系列操做後,你須要返回矩陣中含有最大整數的元素個數。htm
示例 1:blog
輸入: m = 3, n = 3 operations = [[2,2],[3,3]] 輸出: 4 解釋: 初始狀態, M = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] 執行完操做 [2,2] 後, M = [[1, 1, 0], [1, 1, 0], [0, 0, 0]] 執行完操做 [3,3] 後, M = [[2, 2, 1], [2, 2, 1], [1, 1, 1]] M 中最大的整數是 2, 並且 M 中有4個值爲2的元素。所以返回 4。
注意:
1 class Solution { 2 func maxCount(_ m: Int, _ n: Int, _ ops: [[Int]]) -> Int { 3 var m = m 4 var n = n 5 for op in ops 6 { 7 m = min(m, op[0]) 8 n = min(n, op[1]) 9 } 10 return m * n 11 } 12 }
56ms
1 class Solution { 2 func maxCount(_ m: Int, _ n: Int, _ ops: [[Int]]) -> Int { 3 var minX = m 4 var minY = n 5 for operation in ops where operation[0] > 0 && operation[1] > 0 { 6 minX = min(minX, operation[0]) 7 minY = min(minY, operation[1]) 8 } 9 10 return minX * minY 11 } 12 }
116ms
1 class Solution { 2 func maxCount(_ m: Int, _ n: Int, _ ops: [[Int]]) -> Int { 3 guard !ops.isEmpty else { 4 return m * n 5 } 6 7 var a = Int.max 8 var b = Int.max 9 for op in ops { 10 a = min(op.first!, a) 11 b = min(op.last!, b) 12 } 13 14 return a * b 15 } 16 }