LeetCode-1253. Reconstruct a 2-Row Binary Matrix

网友投稿 645 2022-08-25

LeetCode-1253. Reconstruct a 2-Row Binary Matrix

LeetCode-1253. Reconstruct a 2-Row Binary Matrix

Given the following details of a matrix with ​​n​​​ columns and ​​2​​ rows :

The matrix is a binary matrix, which means each element in the matrix can be​​0​​​ or​​1​​.The sum of elements of the 0-th(upper) row is given as​​upper​​.The sum of elements of the 1-st(lower) row is given as​​lower​​.The sum of elements in the i-th column(0-indexed) is​​colsum[i]​​​, where​​colsum​​​ is given as an integer array with length​​n​​.

Your task is to reconstruct the matrix with ​​upper​​​, ​​lower​​​ and ​​colsum​​.

Return it as a 2-D integer array.

If there are more than one valid solution, any of them will be accepted.

If no valid solution exists, return an empty 2-D array.

Example 1:

Input: upper = 2, lower = 1, colsum = [1,1,1]Output: [[1,1,0],[0,0,1]]Explanation: [[1,0,1],[0,1,0]], and [[0,1,1],[1,0,0]] are also correct answers.

Example 2:

Input: upper = 2, lower = 3, colsum = [2,2,1,1]Output: []

Example 3:

Input: upper = 5, lower = 5, colsum = [2,1,2,0,1,0,1,2,0,1]Output: [[1,1,1,0,1,0,0,1,0,0],[1,0,1,0,0,0,1,1,0,1]]

Constraints:

​​1 <= colsum.length <= 10^5​​​​0 <= upper, lower <= colsum.length​​​​0 <= colsum[i] <= 2​​

​​题解:​​

class Solution {public: vector> reconstructMatrix(int upper, int lower, vector& colsum) { if (colsum.empty() == true) { return {}; } int n = colsum.size(); vector> res(2, vector(n, 0)); for (int i = 0; i < n; i++) { if (colsum[i] == 2) { upper--; lower--; res[0][i] = 1; res[1][i] = 1; } if (colsum[i] == 1) { if (upper >= lower) { upper--; res[0][i] = 1; } else { lower--; res[1][i] = 1; } } } if (upper == 0 && lower == 0) { return res; } return {}; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LeetCode-873. Length of Longest Fibonacci Subsequence
下一篇:LeetCode-1323. Maximum 69 Number
相关文章

 发表评论

暂时没有评论,来抢沙发吧~