码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言力扣第48题之旋转图像。辅助数组


     

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

    方法思路:

    思想与矩阵转置完全相同,有兴趣可参考本人的另一篇博客考研复习之数据结构笔记(七)数组和串(上)(包含数组的相关内容)_管二狗绝不摆烂的博客-CSDN博客

    矩阵的压缩存储

    我们以题目中的示例二

    作为例子,分析将图像旋转 90 度之后,这些数字出现在什么位置。

    对于矩阵中的第一行而言,在旋转后,它出现在倒数第一列的位置:

    并且,第一行的第 x 个元素在旋转后恰好是倒数第一列的第 x 个元素。

    对于矩阵中的第二行而言,在旋转后,它出现在倒数第二列的位置:

    对于矩阵中的第三行和第四行同理。这样我们可以得到规律:

    对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。

    我们将其翻译成代码。由于矩阵中的行列从 000 开始计数,因此对于矩阵中的元素 matrix[row][col],在旋转后,它的新位置为 matrixnew[col][n−row−1]。

    这样以来,我们使用一个与 matrix大小相同的辅助数组 matrixnew{matrix},临时存储旋转后的结果。我们遍历 matrix 中的每一个元素,根据上述规则将该元素存放到 matrixnew{matrix}_ 中对应的位置。在遍历完成之后,再将 matrixnew{matrix}_中的结果复制到原数组中即可。

    1. void rotate(int** matrix, int matrixSize, int* matrixColSize) {
    2. int matrix_new[matrixSize][matrixSize];
    3. for (int i = 0; i < matrixSize; i++) {
    4. for (int j = 0; j < matrixSize; j++) {
    5. matrix_new[i][j] = matrix[i][j];
    6. }
    7. }
    8. for (int i = 0; i < matrixSize; ++i) {
    9. for (int j = 0; j < matrixSize; ++j) {
    10. matrix[j][matrixSize - i - 1] = matrix_new[i][j];
    11. }
    12. }
    13. }

  • 相关阅读:
    Hadoop学习记录2--hadoop的概述、部署、使用
    为什么有的测试人员路越走越窄?原因在这里
    zabbix二级目录反代部署
    【示波器专题】示波器触发电路原理
    代码随想录Day51 完结篇 LeetCode T84 柱状图的最大矩形
    用Java写PTA 7-7 较为复杂情况下的求和
    【初识JavaScript-03】
    机器学习之算法优化—Geatpy工具中案例分析
    MS SQL SERVER中的一些特殊表达
    升级 TiDB Operator
  • 原文地址:https://blog.csdn.net/qq_52505851/article/details/126078195
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号