力扣 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;
            }
        }
    }
};
相关推荐
越努力^越幸运16 分钟前
类和对象--中--运算符重载、日期类实现(重要)
开发语言·c++·算法
云卓SKYDROID1 小时前
无人机:智能飞行控制系统技术与算法
科技·算法·无人机·科普·云卓科技
孑么1 小时前
力扣 二叉树的中序遍历
java·算法·leetcode·职场和发展
码农多耕地呗1 小时前
贪心—排序不等式——acwing
算法
Theodore_10221 小时前
10 设计模式之装饰模式
java·开发语言·算法·设计模式·java-ee·装饰模式
colman wang2 小时前
C语言刷题笔记3(7)
c语言·笔记·算法
laufing2 小时前
OD E卷 - 实现【流浪地球】
python·算法·逻辑模拟
Reeeeeeeeeee-3 小时前
[MRCTF2020]Transform
c语言·开发语言·汇编·c++·算法
秋落风声3 小时前
【二维动态规划:交错字符串】
算法·leetcode·动态规划