LeetCode算法学习之旋转矩阵

完整代码如下:

java 复制代码
class Solution {
    public void rotate(int[][] matrix) {
        //思路:先转置在进行行翻转

        //1 转置矩阵
        for(int i = 0;i<matrix.length;i++){
            for(int j = i;j<matrix[i].length;j++){
                int temp = matrix[i][j];
                matrix[i][j] = matrix[j][i];
                matrix[j][i] = temp;
            }
        }
        //2 行翻转
        for(int i = 0;i<matrix.length;i++){
            int left = 0;
            int right = matrix.length - 1;
            while(left < right){
                int temp = matrix[i][left];
                matrix[i][left] = matrix[i][right];
                matrix[i][right] = temp;
                left++;
                right--;
            }
        }

    }
}

本题实现思路:先转置矩阵,在进行行翻转

转置矩阵:将原来矩阵的行变为矩阵的列,顺序不发生改变,1,2,3 1,4,7

4,5,6\] -----\> \[2,5,8

7,8,9\] \[3,6,9

行翻转:将矩阵每一行的最左最右的两个数的位置进行交换,直到左右两个数的位置重叠结束

1,4,7\] \[7,4,1

2,5,8\] -----\> \[8,5,2

3,6,9 9,6,3 这样就达到了顺时针旋转90度矩阵的结果了

代码实现思路:

转置矩阵:通过交换i,j对应位置的元素,获得转置矩阵效果

行翻转:将每行的最左,最右两个元素交换位置,通过两个变量,left right来记录左右两个位置的值,每次交换之后,left++ ,right-- 直到right = left停止

相关推荐
YH55269842 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
吃着火锅x唱着歌2 小时前
Effective C++ 学习笔记 条款43 学习处理模板化基类内的名称
c++·笔记·学习
weixin_431600443 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
遥感知识服务4 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶4 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆4 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
Xuanzang Road4 小时前
第 40 届学习强企玄奘路戈壁挑战赛:在绝境中重塑自我
学习
tju新生代魔迷5 小时前
Python学习日记3
学习
叩码以求索6 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
hsjiasb6 小时前
FreeRTOS学习(三十九)——最终总结
学习·学习笔记·freertos