Leetcode 48. 旋转图像

心路历程:

第一次需要这种类型的题。

一开始从双指针、递归、栈队的角度去思考问题,没有发现明显的特征。

后来想到这个算是二维数组问题,应该也是双指针的一种。

总感觉有什么妙招可以一下子解决,但是没想出来就去找的网上的答案,发现答案和自己想的朴实做法没什么区别,但是其对于'循环不变量'的把握确实要清晰很多。

这道题考察的是对于二维数组索引变换的理解:

可以用坐标轴的角度理解这个二维数组的索引。

注意的点:

1、第一层循环下取整,因为奇数最里面一层不用操作

2、赋值start和end会容易操作许多

解法:

python 复制代码
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        # 思路1:从最外层到最内层逐渐按照链的形式进行旋转90度? -> 是的,应该这样做
        # 思路2:矩阵转置再对称?-> 不让用额外数据结构
        # 这道题考察的是对于二维数组内部索引的理解,以及如何对二维数组元素进行坐标转换和操作。
        n = len(matrix)
        if n <= 1:
            return matrix
        
        for i in range(n // 2):
            start = i
            end = n - 1 - i
            for j in range(end - start):
                temp = matrix[start + j][end]
                matrix[start + j][end] = matrix[start][start + j]
                matrix[start][start + j] = matrix[end - j][start]
                matrix[end - j][start] = matrix[end][end - j]
                matrix[end][end - j] = temp
相关推荐
舟舟亢亢17 分钟前
算法总结——二叉树【hot100】(上)
java·开发语言·算法
weixin_477271691 小时前
根象:树根。基石。基于马王堆帛书《周易》原文及甲骨文还原周朝生活活动现象(《函谷门》原创)
算法·图搜索算法
普通网友2 小时前
多协议网络库设计
开发语言·c++·算法
努力努力再努力wz2 小时前
【Linux网络系列】:TCP 的秩序与策略:揭秘传输层如何从不可靠的网络中构建绝对可靠的通信信道
java·linux·开发语言·数据结构·c++·python·算法
daxi1502 小时前
C语言从入门到进阶——第9讲:函数递归
c语言·开发语言·c++·算法·蓝桥杯
持续学习的程序员+13 小时前
强化学习Q-chunking算法
算法
Polaris北3 小时前
第二十七天打卡
开发语言·c++·算法
风吹乱了我的头发~4 小时前
Day30:2026年2月20日打卡
算法
blackicexs4 小时前
第五周第五天
算法
不吃橘子的橘猫4 小时前
《集成电路设计》复习资料2(设计基础与方法)
学习·算法·fpga开发·集成电路·仿真·半导体