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方法。