LeetCode【48】旋转图像

题目:

思路:

第一种思路:使用额外二维矩阵,变化后的直接存入额外的矩阵,不符合题意

以示例2中,第3行,第1列的13为例,旋转后,变为了第1行,第2列

旋转90 后行的位置,变为:原列序号

旋转90 后列的位置,变为:n-原行的位置+1

第二种思路:使用翻转代替旋转

注:掌握技巧后,代码不易出错

代码:

java 复制代码
public void rotate(int[][] matrix) {

    int rows = matrix.length;
    int columns = matrix[0].length;

    // 先翻转行
    for (int i = 0; i < rows / 2; i++) {
        for (int j = 0; j < columns; j++) {
            int temp = matrix[rows - i - 1][j];
            matrix[rows - i - 1][j] = matrix[i][j];
            matrix[i][j] = temp;
        }
    }

    // 沿主对角线翻转
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < i; j++) {  // 这里要注意,如果每个元素都翻转,最后又转回来了,沿主对角线,一行一列,两行两列,三行三列,column <= rows 对角线不用换,column < row
            int temp = matrix[i][j];
            matrix[i][j] = matrix[j][i];
            matrix[j][i] = temp;
        }
    }

}
相关推荐
2501_93392325几秒前
双指针算法:移动零+复写零(Java)
数据结构·算法·双指针
和芯星通unicore18 分钟前
卫星信号消失的地方,定位如何继续?——解密和芯星通DR 航位推算算法
人工智能·算法·gnss·智能驾驶gnss模块
杨逢昌工厂6S管理34 分钟前
127-钣金产线6S改善后总反弹?杨逢昌一线现场诊断笔记:反弹背后的熵增机理与基准化治理
经验分享·笔记·职场和发展·学习方法
邵奈一1 小时前
让WorkBuddy用上OpenCode免费模型:Magpie小白教程
算法
文丑颜不良啊1 小时前
LeetCode476~500题目解析
java·leetcode
人工智能培训2 小时前
边缘AI与大模型轻量化:让智能跑进每一个终端
大数据·人工智能·算法·重构·生活
lengxuenong2 小时前
树状数组 · 信息学学习手册3-优化LIS
c++·学习·算法
动词ing2 小时前
【题目练习】外观数列
算法
余额瞒着我当琳2 小时前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法