力扣 48. 旋转图像

🔗 https://leetcode.cn/problems/rotate-image

题目

  • 给一个 n * n 的数组,返回顺时针旋转后的矩阵,要求 in-place,不能使用额外矩阵

思路

  • 明确几个要交换的元素坐标,(i, j) → (j, n - i -1) → (n - i - 1, n - j - 1) → (n - j -1, i) → (i, j) 完成替换即可
  • 明确要遍历的轮次,i 遍历到 n/2 即可,j 遍历 i → n - i - 1

代码

cpp 复制代码
class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for (int i = 0; i < n/2; i++) {
            for (int j = i; j < n - i - 1; j++) {
                int tmp = matrix[i][j];
                //printf("--------- %d %d %d\n", i, j, matrix[i][j]);
                matrix[i][j] = matrix[n - j - 1][i];
                matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1];
                matrix[n - i - 1][n - j - 1] = matrix[j][n - i - 1];
                matrix[j][n - i - 1] = tmp;
            }
        }
    }
};
相关推荐
烛衔溟15 分钟前
C语言图论:最短路径算法
c语言·算法·图论·dijkstra·bellman-ford·最短路径
烛衔溟17 分钟前
C语言图论:最小生成树算法
c语言·算法·图论·最小生成树·kruskal·prim
Yzzz-F27 分钟前
算法竞赛进阶指南 进阶搜索
算法·深度优先
带鱼吃猫32 分钟前
数据结构:单链表 / 双链表的结构、接口实现与顺序表对比
数据结构·链表
weixin_4375463333 分钟前
注释文件夹下脚本的Debug
java·linux·算法
元周民34 分钟前
非厄米矩阵高精度计算预先判定需要的计算精度(matlab)
线性代数·matlab·矩阵
for_ever_love__36 分钟前
二插堆的基本原理以及简单实现
数据结构
月明长歌42 分钟前
【码道初阶】【LeetCode 572】另一棵树的子树:当“递归”遇上“递归”
算法·leetcode·职场和发展
月明长歌1 小时前
【码道初阶】【LeetCode 150】逆波兰表达式求值:为什么栈是它的最佳拍档?
java·数据结构·算法·leetcode·后缀表达式
C雨后彩虹1 小时前
最大数字问题
java·数据结构·算法·华为·面试