258做网站怎么样,黑龙江省建设协会网站首页,数据需求 网站建设,wordpress 同步phpcms给你一个 2 行 n 列的二进制数组#xff1a;
矩阵是一个二进制矩阵#xff0c;这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列#xff08;从 0 开始编号#xff09;的元素之和为 colsum[i]#xff0c;colsum…给你一个 2 行 n 列的二进制数组
矩阵是一个二进制矩阵这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列从 0 开始编号的元素之和为 colsum[i]colsum 是一个长度为 n 的整数数组。 你需要利用 upperlower 和 colsum 来重构这个矩阵并以二维整数数组的形式返回它。
如果有多个不同的答案那么任意一个都可以通过本题。
如果不存在符合要求的答案就请返回一个空的二维数组。
示例 1
输入upper 2, lower 1, colsum [1,1,1] 输出[[1,1,0],[0,0,1]] 解释[[1,0,1],[0,1,0]] 和 [[0,1,1],[1,0,0]] 也是正确答案。
代码
class Solution {public ListListInteger reconstructMatrix(int upper, int lower, int[] colsum) {ListListInteger resnew ArrayList();ArrayListInteger upnew ArrayList();ArrayListInteger lownew ArrayList();for(int i0;icolsum.length;i) if(colsum[i]2) {lower--; upper--;}//先把组成2的全减出来if(upper0||lower0) return res;//余量不够了for(int i0;icolsum.length;i){if(colsum[i]2){up.add(1); low.add(1);} if(colsum[i]0){up.add(0);low.add(0);} if(colsum[i]1){if(upper0lower0)//不够数字了return res;else if(upper0)//先将上一行填满{up.add(1); low.add(0);upper--;}else if(lower0){low.add(1);up.add(0);lower--;}}}if(upper!0||lower!0)return res;//多出数字了res.add(up);res.add(low);return res;}
}