【LeetCode 热题 100】矩阵 专题(大多原地算法,需要一定思维)

解题思路 在 代码注释中!

文章目录

    • 73. 矩阵置零
    • 54. 螺旋矩阵
    • 48. 旋转图像
    • 240. 搜索二维矩阵 II

73. 矩阵置零

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {// 难点:原地算法// 直接复用 matrix 第一行 和 第一列,但是会 覆盖, 所以  单独两个变量 记录 第一行,第一列// 单独两个变量 记录 第一行,第一列int r0 = 1, c0 = 1;int n = matrix.size(), m = matrix[0].size();for(int j = 0;j < m;j ++ ) {if(matrix[0][j] == 0) r0 = 0;}for(int i = 0;i < n;i ++ ){if(matrix[i][0] == 0) c0 = 0;}for(int i = 1;i < n;i ++ ){for(int j = 0; j < m;j ++ ){if(matrix[i][j] == 0) matrix[0][j] = matrix[i][0] = 0;}}// 置0for(int j = 1; j < m;j ++ ){if(matrix[0][j] == 0){for(int i = 0;i < n;i ++ ) matrix[i][j] = 0;}}for(int i = 1;i < n;i ++ ){if(matrix[i][0] == 0){for(int j = 0;j < m;j ++ ) matrix[i][j] = 0;}}// 单独的行列if(!r0)for(int j = 0;j < m;j ++ ) matrix[0][j] = 0;if(!c0)for(int i = 0;i < n;i ++ ) matrix[i][0] = 0;}
};

54. 螺旋矩阵

class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {// 方向矢量 模拟int n = matrix.size(), m = matrix[0].size();int k = 0;int dx[4] = {-1,0,1,0}, dy[] = {0,1,0,-1};bool st[n][m];memset(st, 0, sizeof st);vector<int> res;int x = 0, y = 0, d = 1;int a, b;while(k < n * m){res.push_back(matrix[x][y]);st[x][y] = true;int a = x + dx[d], b = y + dy[d];if(a < 0 || a >= n || b < 0 || b >= m || st[a][b]) {d = (d + 1) % 4;a = x + dx[d], b = y + dy[d];}x = a, y = b;k ++ ;}return res;}
};

48. 旋转图像

class Solution {
public:void rotate(vector<vector<int>>& matrix) {// 原地算法// 先 对角线翻转(=顺时针180), 然后 左右翻转(=逆时针90) = 顺时针旋转 90 度int n = matrix.size(), m = matrix[0].size();// 对角线 翻转for(int i = 0;i < n;i ++ ){for(int j = 0;j < i;j ++ ){swap(matrix[i][j], matrix[j][i]);}}// 左右翻转for(int i = 0; i < n;i ++ ){for(int j = 0, k = m - 1; j < k;j ++ , k -- ) swap(matrix[i][j], matrix[i][k]);}}
};

240. 搜索二维矩阵 II

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {// 从右上角开始 搜索int n = matrix.size(), m = matrix[0].size();int i = 0, j = m - 1;while(i < n && j >= 0){if(target > matrix[i][j]) i ++ ;else if(target < matrix[i][j]) j -- ;else if(target == matrix[i][j]) return true;}return false;}
};

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

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

相关文章

oracle,获取每日24*60,所有分钟数

前言&#xff1a; 为规范用户的时间录入&#xff0c;因此我们采用下拉的方式&#xff0c;让用户选择需要的时间&#xff0c;因此我们需要将一天24小时的时间拆分为类似00:00,00:01...23:00,23:01,23:59。因此我们需要生成24*601440行的下拉复选值。具体效果如下图所示。 思路 1…

libuv库学习笔记-processes

Processes libuv提供了相当多的子进程管理函数&#xff0c;并且是跨平台的&#xff0c;还允许使用stream&#xff0c;或者说pipe完成进程间通信。 在UNIX中有一个共识&#xff0c;就是进程只做一件事&#xff0c;并把它做好。因此&#xff0c;进程通常通过创建子进程来完成不…

微信小程序 background-image直接设置本地图片路径,编辑器正常显示,真机运行不显示解决方法

项目场景 微信小程序&#xff0c;设置background-image直接设置本地图片路径。 问题描述 编辑器正常显示&#xff0c;真机运行不显示 原因分析 background-image只能用网络url或者base64图片编码。 解决方案 1、将本地图片转为网络url后设置到background-image上 例如&…

nestjs+typeorm+mysql基本使用学习

初始化项目 安装依赖 npm i -g nest/cli 新建项目 nest new project-name 命令行创建 创建Controller&#xff1a;nest g co test 创建Module&#xff1a;nest g mo test 创建Service&#xff1a;nest g service test 请求创建 123123 接口文档swagger 安装依赖 npm…

【Golang 接口自动化03】 解析接口返回XML

目录 解析接口返回数据 定义结构体 解析函数&#xff1a; 测试 优化 资料获取方法 上一篇我们学习了怎么发送各种数据类型的http请求&#xff0c;这一篇我们来介绍怎么来解析接口返回的XML的数据。 解析接口返回数据 定义结构体 假设我们现在有一个接口返回的数据resp如…

❤ yarn 和npm 的使用

❤ yarn 和npm 的使用 yarn 版本1的使用 yarn 简介 Yarn是facebook发布的一款取代npm的包管理工具。 yarn特点&#xff1a; 1&#xff0c;速度超快。 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率&#xff0c;因…

C# 反射

反射的概念&#xff1a;C#通过类型&#xff08;Type&#xff09;来创建对象&#xff0c;调用对象中的方法&#xff0c;属性等信息&#xff1b;B超就是利用了反射原理将超声波打在人的肚子上&#xff0c;然后通过反射波进行体内器官的成员&#xff1b; 反射提供的类&#xff1a;…

【代理模式】了解篇:静态代理 动态代理~

目录 1、什么是代理模式&#xff1f; 2、静态代理 3、动态代理 3.1 JDK动态代理类 3.2 CGLIB动态代理类 4、JDK动态代理和CGLIB动态代理的区别&#xff1f; 1、什么是代理模式&#xff1f; 定义&#xff1a; 代理模式就是为其他对象提供一种代理以控制这个对象的访问。在某…

强引用和弱引用

什么是弱引用和强引用 强引用&#xff1a; JavaScript 中强引用&#xff1a;对象的引用在 JavaScript 中是强引用&#xff0c;也就是将一个引用对象通过变量或常量保存时&#xff0c;那么这个变量或常量就是强引用&#xff0c;这个对象就不会被回收。 弱引用&#xff1a; JavaS…

P1123 取数游戏(dfs,嘎嘎清晰)

1分析&#xff1a;这一题每个数是否选择会影响后面的选择情况&#xff0c;所以需要用一个数组来保存 所以状态为当前选到那个数&#xff0c;之前选的数的和以及之前每个数是否选了 之后直接搜索即可。尽管复杂度较高&#xff0c;但因为存在大量的不合法情况所以可以通过 时间复…

华为nat64配置

1.前期环境准备 环境拓扑 拓扑分为两个区域,左边为trust区域,使用IPv4地址互访,右边为untrust区域,使用IPv6地址互访 2.接口地址配置 pc1地址配置 pc2地址配置 FW接口配置 (1)首先进入防火墙配置界面 注:防火墙初始账号密码为user:admin,pwd:Admin@123,进入之后…

web攻击面试|网络渗透面试(三)

Web攻击大纲 常见Web攻击类型&#xff1a; SQL注入攻击&#xff1a;介绍SQL注入攻击的概念、原理和常见的攻击方式&#xff0c;如基于错误消息的注入、基于布尔盲注的注入等。解释攻击者如何利用SQL注入漏洞获取敏感信息或者对数据库进行恶意操作&#xff0c;并提供防御措施&a…

8.docker仓库

文章目录 Docker仓库本地私有仓库Docker HarborDocker harbor部署访问页面创建用户下载私有仓库镜像harbor同步 Docker仓库 本地私有仓库 ##先下载 registry 镜像docker pull registry##修改配置文件&#xff0c;在 daemon.json 文件中添加私有镜像仓库地址vim /etc/dock…

SQL-每日一题【1070. 产品销售分析 III】

题目 销售表 Sales&#xff1a; 产品表 Product&#xff1a; 编写一个 SQL 查询&#xff0c;选出每个销售产品 第一年 销售的 产品 id、年份、数量 和 价格。 结果表中的条目可以按 任意顺序 排列。 查询结果格式如下例所示&#xff1a; 示例 1&#xff1a; 解题思路 前置知…

【设计模式】 策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;让客户端代码和算法的具体实现解耦。这样&#xff0c;客户端可以根据不同的需求选择不同的算…

Python爬虫的urlib的学习(学习于b站尚硅谷)

目录 一、页面结构的介绍  1.学习目标  2.为什么要了解页面&#xff08;html&#xff09;  3. html中的标签&#xff08;仅介绍了含表格、无序列表、有序列表、超链接&#xff09;  4.本节的演示 二、Urllib  1.什么是互联网爬虫&#xff1f;  2.爬虫核心  3.爬虫…

Visual Studio 2015编译器 自动生成 XXX_EXPORTS宏

XXX_EXPORTS宏 XXX_EXPORTS宏是由Visual Studio 2015编译器自动生成的。这个宏用于标识当前项目是一个导出符号的动态链接库&#xff08;DLL&#xff09;项目。在使用Visual Studio 2015创建Win32项目时&#xff0c;编译器会自动添加这个宏到项目的预定义宏中。 这个宏的作用…

【MySQL】复合查询

复合查询目录 一、基本查询二、多表查询三、自连接四、子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询4.5 合并查询4.5.1 union4.5.2 union all 五、实战OJ 一、基本查询 --查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的…

web APIs-练习二

轮播图点击切换&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"…

LLaMA模型论文《LLaMA: Open and Efficient Foundation Language Models》阅读笔记

文章目录 1. 简介2.方法2.1 预训练数据2.2 网络架构2.3 优化器2.4 高效的实现 3.论文其余部分4. 参考资料 1. 简介 LLaMA是meta在2023年2月开源的大模型&#xff0c;在这之后&#xff0c;很多开源模型都是基于LLaMA的&#xff0c;比如斯坦福大学的羊驼模型。 LLaMA的重点是比…