[Swift]LeetCode1183. 矩阵中 1 的最大数量 | Maximum Number of Ones

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-xjrnkesp-hm.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

Consider a matrix M with dimensions width * height, such that every cell has value 0 or 1, and any square sub-matrix of M of size sideLength * sideLength has at most maxOnes ones.git

Return the maximum possible number of ones that the matrix M can have.github

 

Example 1:算法

Input: width = 3, height = 3, sideLength = 2, maxOnes = 1
Output: 4
Explanation:
In a 3*3 matrix, no 2*2 sub-matrix can have more than 1 one.
The best solution that has 4 ones is:
[1,0,1]
[0,0,0]
[1,0,1]

Example 2:微信

Input: width = 3, height = 3, sideLength = 2, maxOnes = 2
Output: 6
Explanation:
[1,0,1]
[1,0,1]
[1,0,1]

 

Constraints:app

  • 1 <= width, height <= 100
  • 1 <= sideLength <= width, height
  • 0 <= maxOnes <= sideLength * sideLength

 

如今有一个尺寸为 width * height 的矩阵 M,矩阵中的每一个单元格的值不是 0 就是 1ide

并且矩阵 M 中每一个大小为 sideLength * sideLength 的 正方形 子阵中,1 的数量不得超过 maxOnesspa

请你设计一个算法,计算矩阵中最多能够有多少个 1设计

 

示例 1:code

输入:width = 3, height = 3, sideLength = 2, maxOnes = 1
输出:4
解释:
题目要求:在一个 3*3 的矩阵中,每个 2*2 的子阵中的 1 的数目不超过 1 个。
最好的解决方案中,矩阵 M 里最多能够有 4 个 1,以下所示:
[1,0,1]
[0,0,0]
[1,0,1]

示例 2:

输入:width = 3, height = 3, sideLength = 2, maxOnes = 2
输出:6
解释:
[1,0,1]
[1,0,1]
[1,0,1]

 

提示:

  • 1 <= width, height <= 100
  • 1 <= sideLength <= width, height
  • 0 <= maxOnes <= sideLength * sideLength

Runtime: 32 ms
Memory Usage: 21 MB
 1 class Solution {  2     func maximumNumberOfOnes(_ width: Int, _ height: Int, _ sideLength: Int, _ maxOnes: Int) -> Int {  3         var res:[Int] = [Int]()  4         for i in 0..<sideLength  5  {  6             for j in 0..<sideLength  7  {  8                 res.append(((width-i-1)/sideLength+1)*((height-j-1)/sideLength+1))  9  } 10  } 11         res = res.sorted(by:>) 12         var ans:Int = 0
13         for i in 0..<maxOnes 14  { 15             ans += res[i] 16  } 17         return ans 18  } 19 }
相关文章
相关标签/搜索