leecode1253 | 重构两行二进制矩阵

题也好理解
给定两个整数upper、lower,一个数组 colsum,其中upper 是二维矩阵中上面一行的所有元素之和,注意这个二维 2*n 的矩阵是由二进制数组成(所以里面的元素由0、1、2组成)同理,lower 是下面一行的所有元素之和,而colsum[i]是第i+1 列元素之和。现在要你复现这个二进制矩阵

构建思路,最后一列每个元素都为0

若处理完 colsum 后,两行剩余 个数恰好均为0 ,说明构造出了合法方案。
容易证明:不存在某个决策回合中,必须先填入剩余个数少的一方,才能顺利构造。可用反证法进行证明,若存在某个回合必须填入剩余个数少的一方(假设该回合上填 1 下填 0),必然能够找到同为 的回合进行交换,同时不影响合法性(上下行的总和不变,同时 )。

在这里插入图片描述

class Solution {
public:vector<vector<int>> reconstructMatrix(int upper, int lower, vector<int>& colsum) {int n = colsum.size();vector<int> a, b;vector<vector<int>> ans;for(int i = 0; i <n; ++i){if(colsum[i] == 0){a.push_back(0);b.push_back(0);}else if(colsum[i] == 2){a.push_back(1);b.push_back(1);upper--;lower--;}else if(colsum[i] == 1){if(upper >= lower){upper--;a.push_back(1);b.push_back(0);}else if(upper < lower){lower--;a.push_back(0);b.push_back(1);}}}//如果仅仅是 upper == lower 是不满足要求的,比如因为 前面的遍历,导致upper、lower双双减一,说明构建失败,不存在这样的矩阵,而还是按照colsum 继续遍历直至结束//如果 改成 upper >= 0 说明 遍历结束,但是 后面还有元素没有遍历完?if(upper == lower && upper == 0){ans.push_back(a);ans.push_back(b);}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/483596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataX - 全量数据同步工具

前言 今天是2024-2-21&#xff0c;农历正月十二&#xff0c;相信今天开始是新的阶段&#xff0c;尽管它不是新的周一、某月一日、某年第一天&#xff0c;尽管我是一个很讲究仪式感的人。新年刚过去 12 天&#xff0c;再过 3 天就开学咯&#xff0c;开学之后我的大学时光就进入了…

[corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape

前言 题目来源&#xff1a;竞赛官网 – 建议这里下载&#xff0c;文件系统/带符号的 vmlinux 给了 参考 [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape Exploiting poll_list Objects In The Linux Kernel – 原作者文章&#xff0c;poll_list 利用方式…

TestNG与ExtentReport单元测试导出报告文档

TestNG与ExtentReport集成 目录 1 通过实现ITestListener的方法添加Reporter log 1.1 MyTestListener设置 1.2 输出结果 2 TestNG与ExtentReporter集成 2.1 项目结构 2.2 MyExtentReportListener设置 2.3 单多Suite、Test组合测试 2.3.1 单Suite单Test 2.3…

【selenium】八大元素定位方式|xpath css id name...

目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径 1 、xpath绝对定位 &#xff08;用的不多&#xff09; 缺点&#xff1a;一旦页面结构发生变化&#xff08;比如重新设计时&#xff0c;路径少两节&#xff09;&#x…

【PX4学习笔记】04.QGC地面站的使用

目录 文章目录 目录PX4代码烧入PX4固件代码的烧入方式1PX4固件代码的烧入方式2 QGC地面站的基础使用连接地面站的方式查看关键的硬件信息 QGC地面站的Application Settings模块Application Settings模块-常规界面单位其他设置数据持久化飞机中的数传日志飞行视图计划视图自动连…

【C++练级之路】【Lv.8】【STL】list类的模拟实现

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、结点二、迭代器2.1 成员变量与默认成员函数2.2 operator*2.3 operator->2.4 operator2.5 operator- …

Qt_快速安装指南

下载Qt在线安装程序&#xff08;不仔细介绍&#xff09;注册Qt账号&#xff08;不仔细介绍&#xff09;使用快速运行的命令&#xff0c;按照指定的下载地址下载 在Qt指定目录打开cmd命令窗口.\eqt-unified-windows-x86-4.0.1-1-online. exe --mirror https://mirrors.ustc.edu.…

js设计模式:依赖注入模式

作用: 在对象外部完成两个对象的注入绑定等操作 这样可以将代码解耦,方便维护和扩展 vue中使用use注册其他插件就是在外部创建依赖关系的 示例: class App{constructor(appName,appFun){this.appName appNamethis.appFun appFun}}class Phone{constructor(app) {this.nam…

Python:Keyboard Interrupt - 当代码遇到“Ctrl+C“时发生了什么?

Python&#xff1a;Keyboard Interrupt - 当代码遇到"CtrlC"时发生了什么&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;【Matplotlib之旅&#xff1a;零基础精通数据可视化】 &#x1f4a1; 创作高质量博文&#x…

python | 写一个记仇本

最近背着老婆买了一个switch卡带&#xff0c;这货居然给丈母娘讲&#xff0c;害得我被丈母娘说还小了&#xff0c;不买奶粉买游戏&#xff0c;太气人了&#xff0c;我连夜用python写了个《记仇本》&#xff0c;画个圈圈把她记下来。 本片文章&#xff0c;主要关注于python代码&…

陪诊小程序开发:解决老年人看病难题的科技利器

随着科技的飞速发展&#xff0c;人们的生活方式也在发生着深刻的变化。在这个数字化、智能化的时代&#xff0c;一个小程序的出现&#xff0c;正在悄然改变着我们的生活。那就是陪诊小程序。 陪诊小程序是一款专为老年人或行动不便的患者设计的服务类小程序。通过陪诊小程序&a…

IP地址如何定位你的位置

IP地址本身并不能直接定位一个具体的物理位置&#xff0c;它只是一个逻辑地址&#xff0c;用于在网络中唯一标识一个设备或主机。然而&#xff0c;通过一些技术和方法&#xff0c;我们可以利用IP地址来推测或确定设备的大致地理位置。 一、IP地址的组成 IP地址通常由32位二进制…