LeetCode解法汇总253. 重构 2 行二进制矩阵
目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客
GitHub同步刷题项目:
https://github.com/September26/java-algorithms
原题链接:力扣
描述:
给你一个 2 行 n 列的二进制数组:
- 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是
0就是1。 - 第
0行的元素之和为upper。 - 第
1行的元素之和为lower。 - 第
i列(从0开始编号)的元素之和为colsum[i],colsum是一个长度为n的整数数组。
你需要利用 upper,lower 和 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]] 也是正确答案。
示例 2:
输入:upper = 2, lower = 3, colsum = [2,2,1,1] 输出:[]
示例 3:
输入:upper = 5, lower = 5, colsum = [2,1,2,0,1,0,1,2,0,1] 输出:[[1,1,1,0,1,0,0,1,0,0],[1,0,1,0,0,0,1,1,0,1]]
提示:
1 <= colsum.length <= 10^50 <= upper, lower <= colsum.length0 <= colsum[i] <= 2
解题思路:
* 解题思路:
* 题目本身不难,但是需要考虑的点还是比较多的。
* 首先分别用两个数组line1和line2记录第一行和第二行的值。
* 首先遍历一遍,如果遇到0,则跳过,遇到2,则两行各加1,并且相应的减少upper和lower的数量。
* 如果第一次遍历下来,lower和upper的数量少于0,则直接返回失败。
* 第二次遍历则找colsum[i]==1的情况,此时先减掉upper,等到upper=0则减lower。
* 最后看upper和lower的结果是否为0即可。
代码:
class Solution1253
{
public:vector<vector<int>> reconstructMatrix(int upper, int lower, vector<int> &colsum){vector<vector<int>> result;vector<int> line1(colsum.size());vector<int> line2(colsum.size());for (int i = 0; i < colsum.size(); i++){if (colsum[i] == 0){line1[i] = 0;line2[i] = 0;continue;}if (colsum[i] == 2){line1[i] = 1;line2[i] = 1;upper--;lower--;}}if (upper < 0 || lower < 0){return result;}for (int i = 0; i < colsum.size(); i++){if (colsum[i] != 1){continue;}if (upper > 0){upper--;line1[i] = 1;line2[i] = 0;continue;}if (lower > 0){lower--;line1[i] = 0;line2[i] = 1;continue;}return result;}if (upper == 0 && lower == 0){result.push_back(line1);result.push_back(line2);return result;}return result;}
};
相关文章:
LeetCode解法汇总253. 重构 2 行二进制矩阵
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵࿰…...
ChatGPT实战:生成演讲稿
当众发言(演讲)是一种传达信息、观点和情感的重要方式。通过演讲,人们可以在公共场合表达自己的观点,向观众传递自己的知识和经验,激发听众的思考和行动。无论是商务演讲、学术讲座还是政治演说,演讲稿的写…...
在线搭建K8S,kubernetes集群v1.23.9,docker支持的最后一个版本
1. 部署环境主机(条件说明) master 192.168.186.128 CentOS Linux release 7.9.2009 (Core) node1 192.168.186.129 CentOS Linux release 7.9.2009 (Core) node2 192.168.186.130 CentOS Linux release 7.9.2009 (Core)2. 系统初始化-所有节点&am…...
http自动跳转https的配置方法
要将HTTP自动重定向到HTTPS,您需要在Web服务器上进行以下配置: 在Web服务器上安装SSL证书。 打开Web服务器配置文件(如Apache的httpd.conf或Nginx的nginx.conf)。 找到监听HTTP请求的端口(通常是80端口)。…...
重新初始化k8s集群
执行如下命令,所有节点都执行 kubeadm reset初始化集群,仅在master(centos01)上执行 [rootcentos01 opt]# kubeadm init --apiserver-advertise-address 192.168.109.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-ve…...
JetBrains编程IDE将具备Ai助手功能,或将提高开发速度
近日JetBrains发布博客文章宣布,本周所有基于IntelliJ的IDE和.NET工具的EAP版本都将具备AI助手功能。而这些操作或许将提高开发效率,并且这些AI助手也是使用自家的**ERP**模型和OpenAI服务。 JetBrains表示,当下AI助手功能主要体现在IDE的两…...
【网络原理】TCP/IP协议五层模型
🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本期讲解协议、OSI七层模型、TCP/IP五层模型、网络设备所在的分层、数据的封装和分佣。 目录 …...
【备战秋招】每日一题:2023.05.10-华为OD机试(第二题)-解密
为了更好的阅读体检,可以查看我的算法学习博客 在线评测链接:P1307 题目内容 在全球恐怖主义危机下,一组间谍团队接收到了来自地下工作者的一串神秘代码。这组代码可以帮助他们访问恐怖分子的服务器,但是他们需要先解密代码才能使用它。代…...
【华为OD机试】矩阵最大值(python, java, c++, js)
矩阵最大值 前言:本专栏将持续更新华为OD机试题目,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于OD机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:nansun0903@163.com;备注:CSDN。 题目描述 给定…...
通过USB和wifi连接真机编写第一个脚本
目录 一、连接手机 1、通过usb数据线连接手机 2、无线连接手机 二、编写第一个脚本 一、连接手机 1、通过usb数据线连接手机 数据线连接手机并允许调试 cmd命令行执行: adb devices 如果没有显示device信息,请检查: 手机是否开启usb调…...
【javascript】 javascript对象函数 总结
Object.entries( ) 作用:返回一个数组,获取对象所有可枚举属性的名称 和 可枚举属性的值 const obj { a: 1, b: 2 }; const entries Object.entries(obj); console.log(entries); // [[a, 1], [b, 2]] Object.keys( ) 作用:返回一个数组…...
LVS+Keepalived 高可用群集实战部署
LVSKeepalived 高可用群集实战部署 一、Keepalived的概念1、LVS2、Keepalived及其工作原理3、Keepalived体系主要模块及其作用4、VRRP协议(虚拟路由冗余协议) 二、LVSKeepalived 高可用群集部署LVS 部署1.配置负载调度器(主、备相同ÿ…...
MCU启动过程
启动文件 启动文件到底什么作用,其实启动文件主要是进行堆栈之类的初始化, 中断向量表以及中断函数定义。启动文件要引导进入main 函数。 开发STM32F103用的启动文件是startup_stm32f10x_hd.s S32K146使用的启动文件是startup_S32K146.S 芯片架构 STM…...
Mysql 5.6使用配置文件my.ini来设置长时间连接数据库
对于已经安装了mysql和未安装都是同样的步骤。在C:\Program Files (x86)\MySQL\MySQL Server 5.6下生成一个my.ini文件。然后删除或者修改my-default.ini的名字。 一、my.ini配置文件如下 [mysqld] basedirC:\Program Files (x86)\MySQL\MySQL Server 5.6 datadirC:\Program F…...
改进YOLOv5/YOLOv8:复现结合即插即用 | 高效多尺度注意力(EMA),模块成为YOLOv5改进的小帮手
高效多尺度注意力(EMA) 论文介绍简介EMA模块图像分类实验目标检测实验yolov5加入方法yolo注册yaml文件yolov8加入方法EMA代码及加入方式yaml文件1EMA注意力论文 https://arxiv.org/ftp/arxiv/papers/2305/2305.13563.pdf 论文介绍 通道或空间的显著有效性 注意机制对产生更多…...
图像色彩增强论文调研
阅读论文 Deep Symmetric Network for Underexposed Image Enhancement with Recurrent Attentional Learning(ICCV2021) 使用对称编码器和解码器学习图像从低曝光转化到正常图片的映射方式,通过IFT(Invertible Feature Transformer)网络和提…...
ORACLE透明网关ODBC连接MYSQL
客户需求oracle访问mysql数据,客户是linux7.3 11.2.0.4单实例,字符集GBK,mysql是5.7.31,字符集UTF8,下面结合网上的文档和自己的实践,配置过程如下 1.安装oracle透明网关 首先在oracle服务器上面安装ora…...
Flutter网络请求框架Dio源码分析以及封装(二)--Cookie管理分析
Flutter网络请求框架Dio源码分析以及封装--Cookie管理分析 前言问题如何使用CookieJarCookieManagerPersistCookieJar总结 前言 上一篇文章我们简单分析了一下Dio发出请求时的大致工作流程,这个只是Dio最基本的功能,而且我们还没有分析走到httpClientA…...
Unity如何设计一个技能系统
一、技能系统的设计思路 技能系统是游戏中非常重要的一部分,因此在设计技能系统时需要考虑以下几个方面: 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬࿰…...
测试流程体系
目录: 软件测试基本概念软件测试模型软件测试工作流程测试左移和测试右移 1.软件测试基本概念 通过手工或者工具对"被测对象"进行测试验证实际结果与预期结果之间是否存在差异 软件测试作用 通过测试工作可以发现并修复软件当中存在的缺陷ÿ…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
