Python3程序将矩阵向右旋转K次
给定一个大小为 N*M 的矩阵和一个数字 K。我们必须将矩阵向右旋转 K 次。
例子:
Input : N = 3, M = 3, K = 2
12 23 34
45 56 67
78 89 91
Output : 23 34 12
56 67 45
89 91 78
Input : N = 2, M = 2, K = 2
1 2
3 4
Output : 1 2
3 4
一种简单而有效的方法是将矩阵的每一行视为一个数组并执行数组旋转。这可以通过使用临时数组将元素从 K 复制到数组末尾到数组开头来完成。然后剩下的元素从开始到 K-1 到数组的结尾。
举个例子:
Python3
# Python program to rotate
# a matrix right by k times
# size of matrix
M = 3
N = 3
matrix = [[12, 23, 34],
[45, 56, 67],
[78, 89, 91]]
# function to rotate
# matrix by k times
def rotateMatrix(k) :
global M, N, matrix
# temporary array
# of size M
temp = [0] * M
# within the size
# of matrix
k = k % M
for i in range(0, N) :
# copy first M-k elements
# to temporary array
for t in range(0, M - k) :
temp[t] = matrix[i][t]
# copy the elements from
# k to end to starting
for j in range(M - k, M) :
matrix[i][j - M + k] = matrix[i][j]
# copy elements from
# temporary array to end
for j in range(k, M) :
matrix[i][j] = temp[j - k]
# function to display
# the matrix
def displayMatrix() :
global M, N, matrix
for i in range(0, N) :
for j in range(0, M) :
print ("{} " .
format(matrix[i][j]), end = "")
print ()
# Driver code
k = 2
# rotate matrix by k
rotateMatrix(k)
# display rotated matrix
displayMatrix()
# This code is contributed by
# Manish Shaw(manishshaw1)
输出:
23 34 12
56 67 45
89 91 78
请参阅完整的文章 Rotate the matrix right by K times 了解更多详情!