AC牛客 BM99 顺时针旋转矩阵

简介: AC牛客 BM99 顺时针旋转矩阵

BM99 顺时针旋转矩阵

题目描述

描述
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。
数据范围:0<n<300,矩阵中的值满足0≤val≤1000

要求:空间复杂度 O(N^2),时间复杂度 O(N^2)
进阶:空间复杂度 O(1),时间复杂度 O(N^2)

示例1
输入:
[[1,2,3],[4,5,6],[7,8,9]],3
返回值:
[[7,4,1],[8,5,2],[9,6,3]]

解题思路

1.解法1:利用辅助数组,通过推导,我们知道每一位移动数字位置为:res[j][n-i-1] = mat[i][j];

2.解法2:我们观察,其实顺时针旋转90度,相等于,先按照做左对角线翻转数组,然后再按照列的中轴线翻转数组
实例分析:[[1,2,3],[4,5,6],[7,8,9]],3
在这里插入图片描述

实践代码

解法1

空间复杂度 O(N^2),时间复杂度 O(N^2)

import java.util.*;

public class Solution {
    public int[][] rotateMatrix(int[][] mat, int n) {
        int[][] res = new int[n][n]; //辅助数组
        for (int i = 0; i < res.length; i++) {
            for (int j = 0; j < res.length; j++) {
                res[j][n-i-1] = mat[i][j];
            }
        }
        return res;
    }
}

解法2

空间复杂度 O(1),时间复杂度 O(N^2)

import java.util.*;

public class Solution {
    public int[][] rotateMatrix(int[][] mat, int n) {
        //按照做左对角线翻转数组
        for (int i = 0; i < mat.length; i++) {
            for (int j = i; j < mat.length; j++) {
                int temp = mat[i][j];
                mat[i][j] = mat[j][i];
                mat[j][i] = temp;
            }
        }
        //再按照列的中轴线翻转数组
        for (int i = 0; i < mat.length / 2; i++) {
            for (int j = 0; j < mat.length; j++) {
                int temp = mat[j][i];
                mat[j][i] = mat[j][n - i - 1];
                mat[j][n - i - 1] = temp;
            }
        }
        return mat;
    }
}
目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
AI 肌肤分析技术的演进与落地:从图像理解到智能护肤的工程路径
AI正通过图像识别技术革新护肤行业,实现皮肤状态的智能分析。本文从技术原理、算法演进、评估指标与商业落地四方面,解析AI如何“看懂”肌肤问题,并推动个性化、预测性护肤的未来发展。
518 4
AI 肌肤分析技术的演进与落地:从图像理解到智能护肤的工程路径
|
10月前
|
数据采集 监控 安全
拼多多API价格战预警:竞品监控不落人后!
在电商竞争激烈的当下,拼多多凭借低价策略迅速崛起,但也给商家带来定价挑战。本文解析如何利用API技术,构建实时价格预警与竞品监控系统,助力商家在价格战中抢占先机,实现智能调价与策略应对。
792 0
|
人工智能 缓存 Apache
Mistral Small 3.1:240亿参数多模态黑马!128k长文本+图像分析,推理速度150token/秒
Mistral Small 3.1 是 Mistral AI 开源的多模态人工智能模型,具备 240 亿参数,支持文本和图像处理,推理速度快,适合多种应用场景。
546 7
Mistral Small 3.1:240亿参数多模态黑马!128k长文本+图像分析,推理速度150token/秒
|
人工智能 API 开发者
通过宏实现Word接入DeepSeek
本文介绍如何在Microsoft Word中通过宏接入DeepSeek,实现自动化文本处理。首先确保具备Word 2016及以上版本、DeepSeek API密钥和VBA基础。接着,从豆包平台获取API密钥及模型ID,并在Word中启用开发者选项和宏功能。最后,编写VBA宏代码调用DeepSeek API,完成文本分析与处理。
989 0
|
SQL 存储 分布式计算
Apache Doris 2.1.8 版本正式发布
该版本持续在湖仓一体、异步物化视图、查询优化器与执行引擎、存储管理等方面进行改进提升与问题修复,进一步加强系统的性能和稳定性,欢迎大家下载体验。
522 13
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
机器学习/深度学习 算法 PyTorch
Pytorch的常用模块和用途说明
肆十二在B站分享PyTorch常用模块及其用途,涵盖核心库torch、神经网络库torch.nn、优化库torch.optim、数据加载工具torch.utils.data、计算机视觉库torchvision等,适合深度学习开发者参考学习。链接:[肆十二-哔哩哔哩](https://space.bilibili.com/161240964)
670 0
|
SQL 大数据 数据处理
一文搞懂连续问题
**SQL面试中,连续问题涉及窗口函数如row_number()、lag()、sum()over(order by)等,旨在测试综合能力。关键在于特定分组下,为连续内容分配相同分组ID。解题通常分为判断连续条件和后续处理两步。双排序差值法和累积求和法是常见策略。举例来说,连续登录天数、连续点击次数等题目,会在得到分组ID后用聚合函数统计分析。题目难度逐步升级,涉及销售额增长、时间间隔、涨幅条件等,要求灵活应用并处理复杂逻辑。**
|
存储 索引
一文理解哈希冲突四种解决方法
一文理解哈希冲突四种解决方法
3342 1
一文理解哈希冲突四种解决方法
|
机器学习/深度学习 决策智能 计算机视觉
计算机视觉实战(五)图像梯度计算
计算机视觉实战(五)图像梯度计算
434 0