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

Leetcode JAVA刷刷站(48)旋转图像

一、题目概述

二、思路方向

       要在原地顺时针旋转一个 n x n 的二维矩阵 90 度,你可以通过一系列交换操作来实现。这里的关键在于理解旋转后的矩阵与原矩阵之间的元素对应关系。

       假设原矩阵为 matrix,其中 matrix[i][j] 表示第 i 行第 j 列的元素。旋转 90 度后,matrix[i][j] 的新位置变为 matrix[j][n-1-i]

       由于要原地旋转,我们不能直接按这个关系来赋值,因为这会导致原始数据丢失。相反,我们可以使用一种“层”的概念,从外向内逐层交换元素。每一层包含四个边(两个行边和两个列边),我们按顺时针方向交换这四个边上的元素。

三、代码实现  

public class Solution {  public void rotate(int[][] matrix) {  int n = matrix.length;  // 先沿对角线翻转矩阵  for (int i = 0; i < n; i++) {  for (int j = i; j < n; j++) {  int temp = matrix[i][j];  matrix[i][j] = matrix[j][i];  matrix[j][i] = temp;  }  }  // 然后反转每一行  for (int i = 0; i < n; i++) {  int left = 0, right = n - 1;  while (left < right) {  int temp = matrix[i][left];  matrix[i][left] = matrix[i][right];  matrix[i][right] = temp;  left++;  right--;  }  }  }  
}

执行结果: 

四、小结

       这个解决方案首先将矩阵沿对角线翻转(即交换 matrix[i][j] 和 matrix[j][i]),然后反转每一行。这两步操作结合起来,就实现了矩阵的顺时针 90 度旋转。

       这种方法的时间复杂度是 O(n^2),其中 n 是矩阵的边长,因为我们需要访问矩阵中的每个元素两次(一次是对角线翻转,一次是行反转)。空间复杂度是 O(1),因为我们是在原地修改矩阵,没有使用额外的空间(除了几个用于交换的临时变量)。

 结语  

在这喧嚣的世界里

找到一片属于自己的宁静之地

让心灵得以栖息

!!!

相关文章:

Leetcode JAVA刷刷站(48)旋转图像

一、题目概述 二、思路方向 要在原地顺时针旋转一个 n x n 的二维矩阵 90 度&#xff0c;你可以通过一系列交换操作来实现。这里的关键在于理解旋转后的矩阵与原矩阵之间的元素对应关系。 假设原矩阵为 matrix&#xff0c;其中 matrix[i][j] 表示第 i 行第 j 列的元素。旋转 90…...

编译型语言和解释型语言

年代区分 从硬件技术和软件需求&#xff0c;计算机发展初期&#xff0c;没有可能发展真正的解释型语言&#xff0c;运行速度和内存都受限&#xff0c;只有给机器喂二进制代码才能勉强跑起来。但事实上&#xff0c;解释型语言却在计算机发展很早的时期曾经出现过&#xff0c;当…...

TensorRT 和 PyTorch区别

一、TensorRT 和 PyTorch TensorRT 和 PyTorch 是两个不同的深度学习工具&#xff0c;虽然它们可以用于处理相同类型的任务&#xff0c;但它们的用途、特点和设计目标有所不同。 TensorRT 简介 TensorRT 是 NVIDIA 开发的一款高性能深度学习推理引擎&#xff0c;主要用于优化…...

iOS 17.6.1版本重发,修复高级数据保护错误

今日&#xff0c;苹果没有带来iOS 17.6.2的更新&#xff0c;而是重新发布了iOS 17.6.1版本&#xff0c;本次升级版本号为21G101&#xff0c;高于第一版的21G93。距离初版发布相隔一周半时间。 在 iOS / iPadOS 17.6.1 的更新日志&#xff0c;苹果公司写道&#xff1a;“此更新包…...

【排序算法】八大排序(上)(c语言实现)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;算法 目录 前言 写一串测试数据 交换两元素的函数 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 程序全部代码 总结 前言 排序算法是计算机科…...

Python版《超级玛丽+源码》-Python制作超级玛丽游戏

小时候最喜欢玩的小游戏就是超级玛丽了&#xff0c;有刺激有又技巧&#xff0c;通关真的很难&#xff0c;救下小公主还被抓走了&#xff0c;唉&#xff0c;心累&#xff0c;最后还是硬着头皮继续闯&#xff0c;终于要通关了&#xff0c;之后再玩还是没有那么容易&#xff0c;哈…...

互联网私有IP地址列表

最近因为业务需要&#xff0c;要判断用户的IP是否私有IP&#xff0c; 以前知道的私有IP&#xff0c;基本上只有如下几个(注意&#xff1a;这不是正确答案)&#xff1a; 10.0.0.0/8&#xff08;10.0.0.0-10.255.255.255&#xff09;172.16.0.0/12&#xff08;172.16.0.0-172.31…...

光伏项目管理软件为什么那么多光伏人在用?

在光伏行业迅速发展的今天&#xff0c;光伏项目管理软件已成为众多光伏从业者不可或缺的得力助手。那么&#xff0c;为何这款软件能够受到如此广泛的青睐和应用呢&#xff1f; 一、提高项目管理效率 光伏项目管理软件通过数字化、智能化的手段&#xff0c;对光伏项目的各个环节…...

《AOP实战》— 自定义注解

承接上文&#xff08;传送门 —>《面试必考》 — AOP-CSDN博客&#xff09;&#xff0c;在被面试官拷打的时候&#xff0c;会被问到一个致命问题&#xff1a;“你了解aop吗&#xff1f;有具体的使用经验吗&#xff1f;” 你&#xff1a;......... 言尽于此&#xff0c;此篇…...

微前端架构下的单页应用实现策略

随着Web应用的复杂性日益增加&#xff0c;传统的多页应用&#xff08;MPA&#xff09;模式已经难以满足现代Web开发的需求。单页应用&#xff08;SPA&#xff09;以其流畅的用户体验和高效的页面加载速度&#xff0c;逐渐成为Web开发的主流模式。然而&#xff0c;在微前端架构下…...

JWT(JSON Web Token)工作原理及特点

JWT定义 概念&#xff1a;JWT是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络上安全传输信息&#xff0c;常用于身份验证。比喻&#xff1a;类似于电子通行证&#xff0c;包含用户身份信息&#xff0c;用于身份验证和享受服务。 JWT组成部分 头部&am…...

【体检】程序人生之健康检查,全身体检与预防疫苗,五大传染病普筛,基因检测等

程序员养生指南之 【体检】程序人生之健康检查&#xff0c;全身体检项目分类&#xff0c;五大传染病普筛&#xff0c;基因检测等 文章目录 一、全身体检与预防疫苗&#xff08;年检&#xff09;1、实验室检测&#xff1a;生化全套检查2、医技检查&#xff1a;辅助诊疗科室3、科…...

汇编语言中的指令锁定:解锁高效并发编程

标题&#xff1a;汇编语言中的指令锁定&#xff1a;解锁高效并发编程 在汇编语言的微观世界中&#xff0c;指令锁定&#xff08;Instruction Locking&#xff09;是一种确保数据一致性和操作原子性的关键机制。通过使用特定的lock前缀&#xff0c;开发者可以告诉CPU在执行多处…...

《人工智能时代:金融投资决策的潜在系统性风险及防范策略》

在当今数字化飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;在金融领域的应用日益广泛&#xff0c;特别是在投资决策方面展现出了巨大的潜力。然而&#xff0c;随着其影响力的不断扩大&#xff0c;我们也必须警惕潜在的系统性风险。 人工智能在金融投资决策中…...

MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法

一、搭建开发环境&#xff0c;编译固件。 1、安装在Ubuntu 14.04.5 x86_64系统后&#xff0c;然后安装下面命令行。 $ sudo apt-get install git g make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g…...

[php:\\filter]

写入 #题目 <?php $filename$_GET[filename]; $content$_POST[content]; file_put_contents($filename,<?php exit();.$content); highlight_file(__FILE__); ?> 源码如上&#xff0c;需要再服务器上写入一句话木马 payload如下&#xff1a; #<?php phpinf…...

Linux-环境变量

文章目录 第6章 Linux 环境变量6.1 环境变量简介&#xff1f;6.2 全局变量6.3 局部环境变量6.4 设置用户自定义变量6.4.1 设置局部用户自定义变量6.4.2 设置全局环境变量6.4.3 删除环境变量 6.5 默认的shell环境变量6.6 设置PATH环境变量6.7 定位系统环境变量6.7.1 登录shell6.…...

DISCUZ论坛中 “阅读权限10“这几个字的修改教程以及后台目录路径修改后的管理路径

第一篇&#xff1a;修改“阅读权限10”这几个字 首先找到目录&#xff1a; source\language\lang_message.php 找到这个文件 查找&#xff1a; thread_nopermission 首发地址&#xff1a;玖毅论坛 第二篇&#xff1a;后台管理路径 看到好多人在网上问discuz管理路径怎么…...

springboot 整合spring-boot-starter-data-elasticsearch

依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency> 配置 spring:elasticsearch:rest:uris: "http://localhost:9200" # Elastics…...

Element UI中el-dialog作为子组件如何由父组件控制显示/隐藏~

1、这里介绍的是将el-dialog作为组件封装便于复用&#xff0c;如何通过父组件控制子组件dialog的显示与隐藏。 2、思路:首先el-dialog是通过dialogVisible的值是否为true或false来控制显示与隐藏的。那么我们可以通过父传子props来将true&#xff08;即showFlag的值&#xff0…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...