[LeetCode][算法初级][数组] 31 旋转图像

本文介绍了一个高效的矩阵旋转方法,用于解决LeetCode上的一道面试题。该方法通过先进行矩阵转置,然后对每一行进行反转来实现图像的90度旋转。文章提供了一段Ruby代码实现,并详细解释了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

31 旋转图像

https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/31/

这个题目牵扯到了矩阵的性质了(?)数学不好真的很虚啊!!

总之,虽然不是我想出来的,可以发现,旋转90度等于先把矩阵转置,再把每行置逆。

按照这个思路就好操作了。

转置就是以对角线为轴翻转,也就是 [i,j] [j,i] 交换,为了避免重复交换,处理下标控制在对角线一侧。

# @param {Integer[][]} matrix
# @return {Void} Do not return anything, modify matrix in-place instead.
def rotate(matrix)
    # make a transpose
    matrix.each_with_index do |row,i|
        row.each_with_index do |e,j|
            break if j==i 
            matrix[i][j] = matrix[i][j] + matrix[j][i]
            matrix[j][i] = matrix[i][j] - matrix[j][i]
            matrix[i][j] = matrix[i][j] - matrix[j][i]
        end
    end
    # then reverse
    matrix.each do |row|
        row.reverse!
    end
        
end
偷懒了偷懒了,置逆直接用了ruby的reverse方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值