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

广告网站建设网wordpress登录更改域名后

广告网站建设网,wordpress登录更改域名后,怎么做服装网站,上海市开办企业一窗网上服务题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]…

题目

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 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]]

提示:

n == matrix.length == matrix[i].length
1 <= n <= 20
-1000 <= matrix[i][j] <= 1000

题解

class Solution {
public:void rotate(vector<vector<int>>& matrix) {int m = matrix.size();for(int i = 0; i < m; ++i){for(int j = i; j < m; ++j){swap(matrix[i][j],matrix[j][i]);}}for(int i = 0; i < m; ++i){int left = 0, right = m - 1;while(left < right){swap(matrix[i][left],matrix[i][right]);left++;right--;}}}
};

算法原理

1. 转置矩阵
  • 定义:转置矩阵是将矩阵的行和列交换,即原矩阵中 matrix[i][j] 的位置变为 matrix[j][i]
  • 几何意义:转置操作相当于将矩阵绕主对角线(从左上到右下)镜像翻转。
  • 代码实现
    for (int i = 0; i < n; ++i) {for (int j = i; j < n; ++j) {swap(matrix[i][j], matrix[j][i]);}
    }
    
    • 外层循环遍历每一行 i
    • 内层循环从 j = i 开始遍历列,避免重复交换元素(如 matrix[i][j]matrix[j][i] 会被交换两次)。
2. 反转每一行
  • 定义:将转置后的矩阵的每一行元素逆序排列。
  • 几何意义:反转行操作相当于将矩阵绕垂直中线(中间列)镜像翻转。
  • 代码实现
    for (int i = 0; i < n; ++i) {int left = 0, right = n - 1;while (left < right) {swap(matrix[i][left], matrix[i][right]);left++;right--;}
    }
    
    • 对于每一行 i,使用双指针 leftright 分别指向行的首尾。
    • 交换首尾元素并向中间移动指针,直到指针相遇。

数学推导

  • 顺时针旋转 90 度的坐标变换
    • 原位置 (i, j) 旋转后的坐标为 (j, n-1-i)
  • 转置与反转的组合
    • 转置后(i, j) → (j, i)
    • 反转行后(j, i) → (j, n-1-i)(行反转使 i 变为 n-1-i)。
    • 最终结果与顺时针旋转的坐标变换一致。

示例验证

以示例 1 为例:

原矩阵:
1 2 3
4 5 6
7 8 9转置后:
1 4 7
2 5 8
3 6 9反转每一行后:
7 4 1
8 5 2
9 6 3 → 正确结果

复杂度分析

  • 时间复杂度 O ( n 2 ) O(n^2) O(n2),需遍历矩阵两次。
  • 空间复杂度 O ( 1 ) O(1) O(1),原地操作无需额外空间。
http://www.dtcms.com/a/564964.html

相关文章:

  • 【JUnit实战3_25】第十五章:表现层测试(上)—— HtmlUnit 在网页测试中的用法
  • OpenComic,一款跨平台的漫画阅读器
  • 基于springboot的社区疫情物资管理系统的设计与实现(代码+数据库+LW)
  • 3.3V与5V电平转换方法、电路原理分析
  • python mysql-connector、PyMySQL基础
  • 【Javascript】如何硬拷贝一个数组?
  • 少儿编程不止学技术:6 大学习习惯的蜕变与思维能力的跃迁
  • 自动驾驶运动规划 | 基于自行车模型的运动学模型和横向动力学模型详细推导图解
  • 软文营销的技巧有哪些网站建设和优化内容最重要性
  • 我局在网站建设方面wordpress 搜索没反应
  • C语言基础之函数指针4
  • 深入浅出 Java 虚拟机之进阶部分
  • 医疗保健|医疗养老|基于Java+vue的医疗保健系统(源码+数据库+文档)
  • 网站建设方案书组网方案网站攻击
  • Python循环
  • 基于自适应傅里叶分解(AFD)及其改进算法的信号分解与重构实现
  • Linux Shell awk
  • iBM(i2)图表数据优化及重点人员分析(三)
  • 做两个一摸一样的网站有没有专门做家乡图片的网站
  • Ubuntu 22.04 离线升级 OpenSSH 到 9.8p1
  • Dify 插件开发与打包教程 (Mac)
  • FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM
  • 常见DGX A100服务器维修故障问题及解决方法
  • Linux系统编程——exec函数族
  • 简单搭建express服务器
  • 设置网站建设大连专业网站设计服务商
  • Ollama + Open WebUI
  • 张家界市建设工程造价管理站网站好看的ui界面
  • 【WEB应用安全】XSS攻击实验全流程实战!从漏洞检测到Cookie窃取(附Payload解析+避坑指南)
  • Linux系统启动流程深度解析:从BIOS到用户空间的全链路指南