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;
        }
    }

}
相关推荐
ZPC821013 小时前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC821013 小时前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
琢磨先生David13 小时前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
颜酱13 小时前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
多恩Stone13 小时前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
生信大杂烩13 小时前
癌症中的“细胞邻域“:解码肿瘤微环境的空间密码 ——Nature Cancer 综述解读
人工智能·算法
蜡笔小马14 小时前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
m0_5312371714 小时前
C语言-数组练习进阶
c语言·开发语言·算法
超级大福宝14 小时前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
qq_4592344214 小时前
【题库】| 商用密码应用安全性评估从业人员考核题库(四十)
职场和发展·密码学·学习方法·考核·商用密码·商用密码应用安全性评估·密评