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

旧网站如何优化设计制作实践活动有哪些

旧网站如何优化,设计制作实践活动有哪些,优化系统流程,163企业邮箱下载LeetCode 热题 100 | 48. 旋转图像 大家好,今天我们来解决一道经典的算法题——旋转图像。这道题在LeetCode上被标记为中等难度,要求我们将一个 n n 的二维矩阵(图像)顺时针旋转90度,并且必须原地修改矩阵&#xff0…

LeetCode 热题 100 | 48. 旋转图像

大家好,今天我们来解决一道经典的算法题——旋转图像。这道题在LeetCode上被标记为中等难度,要求我们将一个 n × n 的二维矩阵(图像)顺时针旋转90度,并且必须原地修改矩阵,不能使用额外的矩阵空间。下面我将详细讲解解题思路,并附上Python代码实现。


问题描述

给定一个 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]]

解题思路

核心思想
  1. 转置 + 反转

    • 首先对矩阵进行转置(即行变列,列变行)。
    • 然后对每一行进行反转,即可得到顺时针旋转90度的结果。
  2. 原地操作

    • 直接在原矩阵上进行转置和反转操作,不需要额外的空间。

Python代码实现

def rotate(matrix):n = len(matrix)# 转置矩阵for i in range(n):for j in range(i, n):matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]# 反转每一行for i in range(n):matrix[i].reverse()# 测试示例
matrix1 = [[1,2,3],[4,5,6],[7,8,9]]
matrix2 = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]rotate(matrix1)
rotate(matrix2)print(matrix1)  # 输出: [[7,4,1],[8,5,2],[9,6,3]]
print(matrix2)  # 输出: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

代码解析

  1. 转置矩阵

    • 使用双重循环遍历矩阵的上三角部分(i0n-1jin-1)。
    • 交换 matrix[i][j]matrix[j][i],实现转置。
  2. 反转每一行

    • 使用 reverse() 方法对每一行进行反转。
  3. 原地操作

    • 直接在原矩阵上进行转置和反转,不需要额外的空间。

复杂度分析

  • 时间复杂度:O(n²),其中 n 是矩阵的行数(或列数)。我们需要遍历矩阵的每一个元素进行转置和反转。
  • 空间复杂度:O(1),只使用了常数个额外空间。

示例运行

示例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]]

进阶:其他解法

方法一:四角旋转
def rotate_four_corners(matrix):n = len(matrix)for i in range(n // 2):for j in range(i, n - 1 - i):# 保存左上角的值temp = matrix[i][j]# 左下角 → 左上角matrix[i][j] = matrix[n - 1 - j][i]# 右下角 → 左下角matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j]# 右上角 → 右下角matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i]# 左上角 → 右上角matrix[j][n - 1 - i] = temp# 测试示例
matrix1 = [[1,2,3],[4,5,6],[7,8,9]]
matrix2 = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]rotate_four_corners(matrix1)
rotate_four_corners(matrix2)print(matrix1)  # 输出: [[7,4,1],[8,5,2],[9,6,3]]
print(matrix2)  # 输出: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)

总结

通过使用转置 + 反转的方法,我们可以高效地将矩阵顺时针旋转90度,并且原地修改矩阵。这种方法直观且易于实现,适合大多数场景。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!

关注我,获取更多算法题解和编程技巧!

http://www.dtcms.com/a/617581.html

相关文章:

  • HTML 实例详解
  • 【监控】Spring Boot+Prometheus+Grafana实现可视化监控
  • 【深度学习新浪潮】大模型在图像质量评价方面的研发进展一览
  • **MATLAB R2025a** 环境下,基于 **双向时间卷积网络(BITCN)+ 双向长短期记忆网络(BiLSTM)** 的多特征分类预测完整实现
  • 在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)
  • 《基于机器学习的脑电认知负荷识别研究与应用》论文笔记
  • 数据结构:双向链表(2)
  • Java EE - 常见的死锁和解决方法
  • transformer 教程(一) qkv矩阵介绍以及为什么除以根号d推导
  • 网络网站开发江苏电信网站备案
  • 树莓派 5 上 Ubuntu 24.04 LTS 自带 RDP 远程桌面重启密码就变
  • 算法---贪心算法(Greedy Algorithm)
  • TDengine 字符串函数 REGEXP_IN_SET 用户手册
  • 佛山市外贸网站建设公司因网站开发需要
  • 神经网络组植物分类学习规划与本周进展综述15
  • 做律师事务所网站牡丹江住房和城乡建设厅网站
  • 上海崇明林业建设有限公司 网站建设 市民中心网站
  • 在UEC++中使用什么方式返回像 FTransform 这种类型的值
  • GPT‑OSS‑20B MoE 在昇腾 NPU 上的部署与性能实测:开发者视角的多精度推理优化实践
  • 后端服务弹性伸缩实践实践:让系统更高效、稳定
  • 网站的比较做网站哪家便宜
  • 寻找昆明网站建设手机网站 跳转
  • 建站网址大全56做视频网站
  • jsp网站开发教程响应式布局是什么意思
  • dede中英文企业网站建筑方案设计案例
  • 常见网站颜色搭配技术导航源码
  • 简单响应式网站设计代码翻书效果的网站
  • 网站seo方案建议电影网站怎么做优化
  • 网站开发外包不给ftp外贸推广方式
  • 百度 网站 说明qq是哪家公司运营的