程序员面试金典 - 面试题 01.07. 旋转矩阵(一次遍历+位运算)

1. 题目

给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度。

不占用额外内存空间能否做到

示例 1:
给定 matrix = 
[[1,2,3],[4,5,6],[7,8,9]
],原地旋转输入矩阵,使其变为:
[[7,4,1],[8,5,2],[9,6,3]
]示例 2:
给定 matrix =
[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[15,14,12,16]
], 原地旋转输入矩阵,使其变为:
[[15,13, 2, 5],[14, 3, 4, 1],[12, 6, 8, 9],[16, 7,10,11]
]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/rotate-matrix-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 5776. 判断矩阵经轮转后是否一致

2.1 两次遍历

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int i, j, a, b;for(i = 0; i < matrix.size(); ++i){	//对角线交换for(j = 0; j < i; ++j)swap(matrix[i][j], matrix[j][i]);}for(i = 0; i < matrix.size(); ++i){	//每行反转a = 0, b = matrix[0].size()-1;while(a < b)swap(matrix[i][a++], matrix[i][b--]);}}
};

2.2 一次遍历

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int i, j, n = matrix.size();for(i = 0; i < n/2; ++i){for(j = i; j < n-i-1; ++j){swp(matrix[i][j], matrix[n-1-j][i]);swp(matrix[n-1-j][i], matrix[n-1-i][n-1-j]);swp(matrix[n-1-i][n-1-j], matrix[j][n-1-i]);}}}inline void swp(int&a, int&b){// b = a^b;// a = a^b;// b = a^b;//或者一行代替a ^= b ^= a ^= b;}
};

在这里插入图片描述

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

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

相关文章

Spring Boot中使用@Scheduled创建定时任务

我们在编写Spring Boot应用中经常会遇到这样的场景&#xff0c;比如&#xff1a;我需要定时地发送一些短信、邮件之类的操作&#xff0c;也可能会定时地检查和监控一些标志、参数等。 创建定时任务 在Spring Boot中编写定时任务是非常简单的事&#xff0c;下面通过实例介绍如…

从二本到ICLR杰出论文奖,我用了20年

文 | 李梅编 | 陈彩娴源 | AI科技评论二本出身&#xff0c;读了两个硕士才在29岁开始读博&#xff0c;39岁才结束博士后研究的付杰形容&#xff0c;他的20年就像个体与系统的博弈&#xff1a;一些机器学习的文章中&#xff0c;研究者会根据训练初始阶段 Training Curve&#xf…

Spring Boot属性配置文件详解

相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能&#xff0c;还能实现快速开发的便捷。我们在Spring Boot使用过程中&#xff0c;最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容&#xff0c;替代它的是在pom.xml中引入模块化的Starter PO…

程序员面试金典 - 面试题 01.08. 零矩阵

1. 题目 编写一种算法&#xff0c;若M N矩阵中某个元素为0&#xff0c;则将其所在的行与列清零。 示例 1&#xff1a; 输入&#xff1a; [[1,1,1],[1,0,1],[1,1,1] ] 输出&#xff1a; [[1,0,1],[0,0,0],[1,0,1] ]示例 2&#xff1a; 输入&#xff1a; [[0,1,2,0],[3,4,5,2]…

AI帮写代码67元/月!

整理 | 彭慧中责编 | 屠敏出品 | CSDN如今&#xff0c;人工智能已经逐渐习惯充当人类生活中“副驾驶”位置上的角色。它帮助我们打扫卫生、撰写文稿、回复消息、路线导航....但在此之前&#xff0c;人工智能在改进代码方面还止步不前&#xff0c;以至于多少人还在为绞尽脑汁写代…

Spring Boot中Web应用的统一异常处理

我们在做Web应用的时候&#xff0c;请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射&#xff1a;/error&#xff0c;当处理中抛出异常之后&#xff0c;会转到该请求中处理&#xff0c;并且该请求有一个全局的错误页面用来展示异常内容。 选择一个之…

统计学习及监督学习概论

文章目录1. 统计学习2. 统计学习分类2.1 基本分类2.1.1 监督学习 supervised learning2.1.2 无监督学习 unsupervised learning2.1.3 强化学习 reinforcement learning2.1.4 半监督学习 semi-supervised learning、主动学习 active learning2.2 按模型分类2.3 按算法分类2.4 按…

BERT为何无法彻底干掉BM25??

文 | QvQ近些年来&#xff0c;相比传统检索模型&#xff0c;大规模预训练式transformers结构的引入在各类任务上都有显著的提升。而这种提升在不同的数据集上有着特殊的模型设置&#xff0c;而当前依旧无法充分理解这些模型为什么以及如何可以更好的工作。古人云&#xff1a;知…

Spring Boot中使用MongoDB数据库

前段时间分享了关于Spring Boot中使用Redis的文章&#xff0c;除了Redis之后&#xff0c;我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB。 下面就来简单介绍一下MongoDB&#xff0c;并且通过一个例子来介绍Spring Boot中对MongoDB访问的配置和使用。 Mong…

程序员面试金典 - 面试题 01.09. 字符串轮转

1. 题目 字符串轮转。给定两个字符串s1和s2&#xff0c;请编写代码检查s2是否为s1旋转而成&#xff08;比如&#xff0c;waterbottle是erbottlewat旋转后的字符串&#xff09;。 示例1:输入&#xff1a;s1 "waterbottle", s2 "erbottlewat"输出&#x…

谷歌HuggingFace | 零样本能力最强的语言模型结构

从 GPT3 到 Prompt&#xff0c;越来越多人发现大模型在零样本学习&#xff08;zero-shot&#xff09;的设定下有非常好的表现。这都让大家对 AGI 的到来越来越期待。但有一件事让人非常疑惑&#xff1a;19 年 T5 通过“调参”发现&#xff0c;设计预训练模型时&#xff0c;Enco…

Spring Boot中使用Redis数据库

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外&#xff0c;对于很多NoSQL数据库一样提供了自动化配置的支持&#xff0c;包括&#xff1a;Redis, MongoDB, Elasticsearch, Solr和Cassandra。 使用Redis Redis是一个开源的使用ANSI C语言编写、支持网络、…

程序员面试金典 - 面试题 02.01. 移除重复节点(哈希set)

1. 题目 编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1:输入&#xff1a;[1, 2, 3, 3, 2, 1]输出&#xff1a;[1, 2, 3]示例2:输入&#xff1a;[1, 1, 1, 1, 2]输出&#xff1a;[1, 2]提示&#xff1a; 链表长度在[0, 20000]范围内。 链表元…

从 Google AI 离职了,这里让我爱不起来

文 | 天于刀刀大家都清楚&#xff0c;谷歌是一所著名的能让无数打工人「爱上工作」的良心企业。轻松自由的办公环境&#xff0c;超多在职福利和活动&#xff0c;更不必说业界第一的金字招牌带来的丰厚报酬&#xff0c;是吾辈躺平咸鱼的终极 Dream Offer 。而现在竟然有人主动提…

Spring Boot日志管理

Spring Boot在所有内部日志中使用Commons Logging&#xff0c;但是默认配置也提供了对常用日志的支持&#xff0c;如&#xff1a;Java Util Logging&#xff0c;Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。 格式化日志 默认的日志输出…

感知机(Perceptron)

文章目录1. 感知机模型2. 感知机学习策略3. 感知机学习算法3.1 原始形式3.2 算法收敛性3.3 对偶形式4. 基于感知机Perceptron的鸢尾花分类实践感知机&#xff08;perceptron&#xff09;是 二类分类的线性分类模型输入&#xff1a;实例的特征向量输出&#xff1a;实例的类别&am…

苹果5G芯片研发失败,冲上热搜

文 | 科小编源 | 科技每日推送多年来&#xff0c;iPhone的信号问题&#xff0c;一直被大家诟病。苹果也一直尝试自研5G芯片来解决&#xff0c;但最新消息显示&#xff0c;苹果再次失败了。6月28日&#xff0c;有“地表最强苹果剧透师”之称的郭明錤&#xff0c;在推特上爆料&am…

Spring Boot多数据源配置与使用

之前在介绍使用JdbcTemplate和Spring-data-jpa时&#xff0c;都使用了单数据源。在单数据源的情况下&#xff0c;Spring Boot的配置非常简单&#xff0c;只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展&#xff0c;我们通常会进行数据库拆分或…

基于感知机Perceptron的鸢尾花分类实践

文章目录1. 感知机简介2. 编写感知机实践2.1 数据处理2.2 编写感知机类2.3 多参数组合运行3. sklearn 感知机实践4. 附完整代码本文将使用感知机模型&#xff0c;对鸢尾花进行分类&#xff0c;并调整参数&#xff0c;对比分类效率。1. 感知机简介 感知机&#xff08;perceptro…

大火的扩散模型终于杀到了NLP领域

从2020年的初出茅庐&#xff0c;到2021年的日趋火热&#xff0c;再到2022年的大放异彩&#xff0c;扩散模型(Diffusion Models) 正在人工智能学术界和工业界获取越来越多的关注。如果还不是特别了解扩散模型的朋友&#xff0c;可以阅读卖萌屋的几篇历史推文《扩散模型在图像生成…