かいてんマトリクスきょうかい
10538 ワード
プログラマ
領域の枠線の数字だけが時計回りに1つ回転します.このとき、位置変更後の数字の中で一番小さい数字を順番に配列に入れて返します
x 1行y 1列からx 2行y 2列に対応する領域の矩形から、枠の中の数字の1つを時計回りに回転させる.
columnsは2以上100以下の自然数です.
にゅうしゅつりょく
rowscolumnsqueriesresult66[[2,2,5,4],[3,3,6,6],[5,1,6,3]][8, 10, 25]33[[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]][1, 1, 5, 3]10097[[1,1,100,97]][1]
方法
マトリクスを作成し、4つの部分に分けて回転します.一番左上の数字を基準にします.一部を回転するたびに、最大値を求めて格納します.
じゅんじょに進める
コード#コード#
def solution(rows, columns, queries):
matrix = [[0]*columns for _ in range(rows)]
k = 1
for i in range(rows):
for j in range(columns):
matrix[i][j] = k
k += 1
ans = []
for x1, y1, x2, y2 in queries:
a = matrix[x1-1][y1-1]
v = a
# 위로
for x in range(x1-1, x2-1):
matrix[x][y1-1] = matrix[x+1][y1-1]
v = min(v, matrix[x][y1-1])
# 왼쪽으로
for y in range(y1-1, y2-1):
matrix[x2-1][y] = matrix[x2-1][y+1]
v = min(v, matrix[x2-1][y])
# 아래로
for x in range(x2-1, x1-1, -1):
matrix[x][y2-1] = matrix[x-1][y2-1]
v = min(v, matrix[x][y2-1])
# 오른쪽으로
for y in range(y2-1, y1-1, -1):
matrix[x1-1][y] = matrix[x1-1][y-1]
v = min(v, matrix[x1-1][y])
matrix[x1-1][y1] = a
ans.append(v)
return ans
Reference
この問題について(かいてんマトリクスきょうかい), 我々は、より多くの情報をここで見つけました https://velog.io/@sezeom/행렬-테두리-회전하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol