当前位置: 首页 > article >正文

hot100 48.旋转图像

1.题目要求把一个方阵n * n的矩阵顺时针旋转90°。且要求不能创建另一个矩阵空间复杂度必须是O(1)。2.思路1顺时针旋转90°后位于ij的元素去哪了2竖着看——第一列的元素去到第一行。——第二列的元素去到第二行。——......——第j列的元素去到第j行。3横着看——第一行的元素去到最后一列。——第二行的元素去到倒数第二列。——......——第i行的元素去到第n - 1 - i列i从0开始。4所以位于第i行第j列的元素去到第j行第n - 1 - i列即ij-jn - 1 - i。5ij-jn - 1 - i可以通过两次翻转操作得到ij-转置ji-行翻转jn - 1 - i。——转置就是把矩阵按照主对角线翻转位于ij的元素去到ji。——行翻转就是把每一行都翻转位于ji的元素去到jn - 1 - i。6示例一的操作过程如下图所示7实现以下两步操作都可以原地实现。——转置把主对角线下面的元素matrix[i][j]和关于主对角线对称位置的元素matrix[j][i]交换。——行翻转遍历每一行row matrix[i]把左半边的元素row[j]和关于垂直中轴对称位置的元素row[n - 1 - j]交换。或者使用库函数翻转row。3.复杂度分析1时间复杂度O(n^2)其中n是matrix的行数和列数。2空间复杂度O(1)。附代码一写法一class Solution { public void rotate(int[][] matrix) { int n matrix.length; //第一步转置 for(int i 0;i n;i){ for(int j 0;j i;j){ //遍历对角线下方元素 int tmp matrix[i][j]; matrix[i][j] matrix[j][i]; matrix[j][i] tmp; } } //第二步行翻转 for(int i 0;i n;i){ //for(int[] row : matrix) for(int j 0;j n / 2;j){ //遍历左半元素 int tmp matrix[i][j]; //int tmp row[j]; matrix[i][j] matrix[i][n - 1 - j]; //row[j] row[n - 1 - j]; matrix[i][n - 1 - j] tmp; //row[n - 1 - j] tmp; } } } }二写法二可以把两个循环合并成一个循环。需要把遍历顺序调整为遍历对角线上方的元素这样每行遍历完之后这一行的元素后面就不会再被访问到可以直接做行翻转因为在转置过程中当处理到第i行时第0到第i - 1行已经完成了它们所有的转置交换并且已经翻转过了不会再被修改所以我们可以安全地修改第i行。class Solution { public void rotate(int[][] matrix) { int n matrix.length; for(int i 0;i n;i){ for(int j i 1;j n;j){ //遍历对角线上方的元素做转置 int tmp matrix[i][j]; matrix[i][j] matrix[j][i]; matrix[j][i] tmp; } for(int j 0;j n/2;j){ //遍历左半元素做行翻转 int tmp matrix[i][j]; matrix[i][j] matrix[i][n - 1 - j]; matrix[i][n - 1 - j] tmp; } } } }ACM模式import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); // 读取矩阵大小 int n scanner.nextInt(); // 读取矩阵元素 int[][] matrix new int[n][n]; for (int i 0; i n; i) { for (int j 0; j n; j) { matrix[i][j] scanner.nextInt(); } } // 调用方法 Solution solution new Solution(); solution.rotate(matrix); // 输出结果 for (int i 0; i n; i) { for (int j 0; j n; j) { System.out.print(matrix[i][j]); if (j n - 1) { System.out.print( ); } } System.out.println(); } scanner.close(); } } class Solution { public void rotate(int[][] matrix) { int n matrix.length; // 第一步转置 for (int i 0; i n; i) { for (int j 0; j i; j) { // 遍历对角线下方元素 int tmp matrix[i][j]; matrix[i][j] matrix[j][i]; matrix[j][i] tmp; } } // 第二步行翻转水平镜像 for (int i 0; i n; i) { for (int j 0; j n / 2; j) { // 遍历左半元素 int tmp matrix[i][j]; matrix[i][j] matrix[i][n - 1 - j]; matrix[i][n - 1 - j] tmp; } } } }

相关文章:

hot100 48.旋转图像

1.题目要求:把一个方阵(n * n的矩阵)顺时针旋转90。且要求不能创建另一个矩阵,空间复杂度必须是O(1)。2.思路:(1)顺时针旋转90后,位于(i,j)的元素…...

万字长文解读Qwen进化史:27篇论文深度复盘Qwen模型家

自2023年生成式人工智能迎来爆发以来,LLM技术的发展已从单纯的堆训练数据、堆参数量,转向了架构效率、模态融合以及长上下文推理能力的深水区。 在这场全球性的技术角逐中,阿里巴巴通义实验室推出的 Qwen(通义千问)系列…...

大模型原理深度解析:程序员必备知识,助你轻松驾驭AI浪潮!

先说结论 作为一个应用开发者,你需要了解大模型原理吗? 我的答案是:需要,但不需要太深。 就像你不需要懂JVM字节码也能写Java,但了解一些原理,能帮你: 更好地理解模型的能力和边界做出更合理的技…...

SpringBoot与Quartz深度整合:动态任务管理与Job中Bean注入的实战解析

1. 为什么需要SpringBoot与Quartz整合 在企业级应用开发中,定时任务是一个再常见不过的需求了。你可能用过Spring自带的Scheduled注解,它确实简单好用,只需要在方法上添加一个注解就能实现定时执行。但实际项目中,我们往往需要更灵…...

The Ultimate Guide to Ruby Timeouts:如何为第三方服务API设置超时

The Ultimate Guide to Ruby Timeouts:如何为第三方服务API设置超时 【免费下载链接】the-ultimate-guide-to-ruby-timeouts Timeouts for popular Ruby gems 项目地址: https://gitcode.com/gh_mirrors/th/the-ultimate-guide-to-ruby-timeouts 在Ruby开发中…...

优化DMA串口通信:避免数据覆盖的实战策略

1. DMA串口通信的数据覆盖问题解析 第一次遇到DMA串口通信数据覆盖问题时,我正在调试一个ADC采集项目。主函数里连续发送两条数据,结果接收端收到的数据总是残缺不全,第二条数据的前半部分莫名其妙地覆盖了第一条数据的后半段。当时我的第一反…...

Mitogen上下文管理实战:从本地到SSH的完整部署清单

Mitogen上下文管理实战:从本地到SSH的完整部署清单 【免费下载链接】mitogen Distributed self-replicating programs in Python 项目地址: https://gitcode.com/gh_mirrors/mi/mitogen Mitogen是一个基于Python的分布式自复制程序框架,通过高效的…...

Autodistill革命性AI工具:无需标注即可训练计算机视觉模型的终极指南

Autodistill革命性AI工具:无需标注即可训练计算机视觉模型的终极指南 【免费下载链接】autodistill Images to inference with no labeling (use foundation models to train supervised models). 项目地址: https://gitcode.com/gh_mirrors/au/autodistill …...

云端GPU实战:在AutoDL平台高效部署Llama2中文对话模型

1. 为什么选择云端GPU部署Llama2中文模型 最近在折腾大模型部署的朋友应该都深有体会,本地跑个13B参数的Llama2简直就像让自行车上高速——不是不行,是真费劲。我去年尝试在32G内存的工作站上部署7B版本,光是加载模型就花了15分钟&#xff0c…...

多变量赋值,解包,split()与eval()

input与split结合运用注意点:...

别再烧芯片了!手把手教你搞懂STM32 GPIO的过压保护二极管(附实测数据)

STM32 GPIO保护二极管实战指南:从原理到实测的完整避坑手册 刚拿到STM32开发板的新手们,总会遇到这样的灵魂拷问:为什么我的芯片又冒烟了?上周实验室里,小王同学用5V的超声波模块直接接到STM32的GPIO上,结果…...

AIAgent语音识别实战指南:2026奇点大会披露的7个工业级优化参数(附基准测试数据)

第一章:2026奇点智能技术大会:AIAgent语音识别全景洞察 2026奇点智能技术大会(https://ml-summit.org) 技术演进脉络 2026年大会首次系统性披露端到端语音识别模型在AIAgent场景中的泛化瓶颈突破路径。主流框架已从传统CTCAttention转向动态语义对齐&a…...

Pixel Aurora Engine保姆级教程:极光青主题CSS像素边框重绘技巧

Pixel Aurora Engine保姆级教程:极光青主题CSS像素边框重绘技巧 1. 认识Pixel Aurora Engine Pixel Aurora Engine是一款专为像素艺术创作设计的AI绘图工作站。它最大的特点是将现代AI技术与复古像素美学完美结合,创造出独特的视觉体验。 这个引擎最吸…...

如何处理旧版MongoDB升级到新版时密码哈希不兼容

bcrypt哈希值在MongoDB各版本间完全兼容,问题根源是认证机制升级:旧MONGODB-CR用户需重建为SCRAM-SHA-1,FCV须同步更新,驱动与连接字符串需显式指定authMechanism。bcrypt 哈希结果在新旧 MongoDB 版本间完全兼容,问题…...

【SPIE出版、EI检索稳定】2026年智慧油气与可持续发展国际学术会议(SOGSD 2026)

在全球能源转型与科技革命深度融合之际,智慧油气已成为推动行业高质量发展的核心动力。作为首届盛会,2026年智慧油气与可持续发展国际学术会议将于2026年5月29-31日在中国成都举行。SOGSD 2026旨在构建一个高水平的国际合作交流平台,聚焦人工…...

后 Zoom 时代:视频会议平台的多元竞争与选择

Google Meet:免费易用,AI 助力办公提效Google Meet 是多数使用 Google Workspace 团队的首选。它免费版就能支持 100 名参会者,且所有功能在浏览器中流畅运行,无需下载。其能自动从 Gmail 和日历提取会议详情,省去复制…...

【SPIE-电子科技大学主办】第三届计算机视觉、机器人与自动化工程国际学术会议(CRAE 2026)

第三届计算机视觉、机器人与自动化工程国际学术会议(CRAE 2026)将于2026年6月26-28日在成都举行。会议聚焦于计算机视觉、机器人与自动化工程等前沿研究领域,旨在为全球范围内的专家学者、工程技术人员和技术研发人员提供一个高效的平台。往届…...

为什么92%的AIAgent项目卡在世界建模阶段?深度拆解6个被忽略的感知-记忆-推理对齐断点

第一章:世界模型在AIAgent架构中的核心定位与失败率归因 2026奇点智能技术大会(https://ml-summit.org) 世界模型(World Model)并非AIAgent的可选组件,而是其认知闭环的底层基础设施——它承担着环境建模、状态推演、反事实规划与…...

【四川电影电视学院主办】第五届科学教育与艺术鉴赏国际学术会议(SEAA 2026)

第五届科学教育与艺术鉴赏国际学术会议(SEAA 2026)将于2026年6月26-28日在中国-成都召开。会议主要围绕会议主要围绕科学教育与艺术鉴赏以及影视教学、影视艺术、影视制作等研究领域展开讨论。旨在为该领域的专家学者及企业发展人提供一个分享研究成果、讨论存在的问题与挑战、…...

2025届学术党必备的六大降重复率工具解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于维普系统检测AI生成内容的情况,要想降低AI率,得从文本特征调整这…...

2025届毕业生推荐的降AI率平台横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 切实有效地降低知网AI检测率,为此特别建议采取下面这些策略:首先&…...

Gemma-3多模态大模型应用场景:盲文教材图片→文字转录+知识点提炼

Gemma-3多模态大模型应用场景:盲文教材图片→文字转录知识点提炼 1. 应用场景概述 盲文教材作为视障人群获取知识的重要载体,其数字化和智能化处理一直面临巨大挑战。传统的人工转录方式效率低下且成本高昂,而普通OCR技术又无法识别盲文点字…...

2025届最火的降AI率神器横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在AI生成内容越来越广泛地普及的大背景状况之下,怎样去有效减少文本所具有的机械…...

从零开始!手把手教你搭建一个会“思考“的外汇交易AI机器人(附源码)

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:今天跟大家分享我最新搭建的欧美外汇自动交易机器人。这套系统整合了EMA均线、RSI强弱指标、MACD趋势线和布林带四大经典武器,还加入了谷歌Gemini AI智能过滤层,能自动识别市场陷阱。从数据抓取到信号生成,…...

大模型应用开发实例学习笔记 - 大模型集成、RAG、Tool Calling、MCP协议、智能体.etc

大模型应用开发实例学习笔记 - 大模型集成、RAG、Tool Calling、MCP协议、智能体.etc 掌握基于Spring生态的AI应用开发,覆盖大模型集成、RAG、Tool Calling、MCP协议、智能体等核心场景。 Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java…...

嵌入式linux设备内存泄露排查思路

文章目录 引言: 一、快速确认 二、定位泄露源(内核态/用户态) 2.1 检查内核内存 2.2 检查用户态进程 三、使用工具排查泄露点 四、修复与验证 引言: 设备自己跑着跑着突然挂死了,还是靠看门狗给救回来了。这种时候,一定要考虑是不是内存泄露导致内存耗尽了。 那我们来看…...

rk3399平台rtl8723DS Wi-Fi模块SDIO接口驱动移植与双模配置实战

1. 认识rk3399与rtl8723DS这对黄金搭档 第一次拿到rk3399开发板和rtl8723DS模块时,我就像拿到新玩具的孩子一样兴奋。rk3399这颗六核处理器在嵌入式领域堪称性能怪兽,而rtl8723DS作为Wi-Fi蓝牙二合一模块,2.4GHz频段支持加上双模共存特性&…...

ubuntu命令行中文化脚本,个人用于解决“WSL中安装并使用cc-switch图形化界面乱码”问题

脚本内容:#!/bin/bashecho " WSL Ubuntu 中文环境配置脚本 "# 1. 安装中文 locale echo "[1/4] 安装中文语言包..." sudo apt update sudo apt install -y language-pack-zh-hans# 2. 生成并配置 locale echo "[2/4] 配置系统 locale...&q…...

保姆级教程:STM32+ESP8266接入机智云,从零完成数据点上报与APP控制

STM32与ESP8266接入机智云实战:从数据点定义到APP控制全解析 在智能硬件开发领域,快速实现设备联网与远程控制是许多嵌入式工程师面临的挑战。本文将手把手带您完成一个基于STM32和ESP8266的智能温湿度监测系统,从机智云平台配置到代码移植&a…...

GetQzonehistory:终极QQ空间历史说说备份指南,3步永久保存青春回忆

GetQzonehistory:终极QQ空间历史说说备份指南,3步永久保存青春回忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想要永久保存QQ空间里那些珍贵的青春记忆吗&a…...