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

48 旋转图像

在这里插入图片描述
解题思路:
\qquad 这道题同样需要用模拟解决,原地算法要求空间复杂度尽量小,最好为 O ( 1 ) O(1) O(1)。模拟的关键是找到旋转的内在规律,即旋转前后的位置坐标的变化规律。

\qquad 正方形矩阵类似洋葱,可以由不同大小的正方形数字分层组合而成,而旋转后的元素只在所在的那一层中进行位置变换,且四次变换后可回到原位置,若将元素四次变换经过的位置找出来,把元素按照旋转顺序进行一次移动即可完成旋转。

\qquad 我们把一层正方形提取出来看,定义正方形左上角的坐标为[i, i],正方形边长为n,则正方形边界为m = i+n-1,边上任意位置元素[i, i+j]经过一次旋转得到[i+j, m],经过第二次旋转得到[m, m-j],继续旋转得[m-j, i],最后旋转又回到[i, i+j]。将这四个位置上的元素按顺序移动即可完成旋转,正方形一条边上所有的元素旋转完毕后,进入下一层,i+1n-2。当n <= 1时,可以认为矩阵已经旋转完成。

	void rotate(vector<vector<int>>& matrix) {int n = matrix.size();int i = 0, temp = 0;while(n > 1){for(int j = 0; j < n-1; j++){temp = matrix[i][i+j];matrix[i][i+j] = matrix[i+n-1-j][i];matrix[i+n-1-j][i] = matrix[i+n-1][i+n-1-j];matrix[i+n-1][i+n-1-j] = matrix[i+j][i+n-1];matrix[i+j][i+n-1] = temp;}i++;n -= 2;}}
http://www.lryc.cn/news/448066.html

相关文章:

  • TDengine 签约青山钢铁,实现冶金全流程质量管控智能化
  • __pycache__文件夹
  • 利用 Local Data 导入文件到 OceanBase 的方法
  • 改变安全策略的五大实践
  • 在MacOS上安装MongoDB数据库
  • 负载均衡--会话保持失败原因及解决方案(五)
  • 24 Vue3之集成TailwindCSS
  • iOS OC 底层原理之 category、load、initialize
  • 另外知识与网络总结
  • 怎样用云手机进行TikTok矩阵运营?
  • RTMP播放器全解析
  • 定期清洗ip是为了什么?怎么清洗iip
  • 谁能给我一个ai现在无法替代画师的理由?
  • 深入理解MySQL InnoDB中的B+索引机制
  • 语言的输入
  • 2024年中国电子学会青少年软件编程(Python)等级考试(二级)核心考点速查卡
  • OpenCV系列教程二:基本图像增强(数值运算)、滤波器(去噪、边缘检测)
  • 什么是文件完整性监控(FIM)
  • 分库分表还是分布式?如何用 OceanBase的单机分布式一体化从根本上解决问题
  • 怎么查看网站是否被谷歌收录,哪些因素影响着网站是否被谷歌收录
  • 【RabbitMQ】面试题
  • Python软体中使用TensorFlow实现一个简单的神经网络:从零开始
  • StopWath,apache commons lang3 包下的一个任务执行时间监视器的使用
  • ELMO理论
  • EMU 街机模拟器编译方法
  • c++开发之编译curl(windows版本)
  • IT运维挑战与对策:构建高效一体化运维管理体系
  • 前海石公园的停车点探寻
  • 嵌入式学习--线性表Day01
  • Rust 全局变量的最佳实践 lazy_static/OnceLock/Mutex/RwLock