您的位置:首页 > 编程语言 > Python开发

Leetcode: 在原矩阵上实现矩阵的旋转(Python)

2016-08-04 11:52 423 查看

48. Rotate Image

Imformation

Total Accepted: 75511

Total Submissions: 212021

Difficulty: Medium

Question

You are given an n x n 2D matrix representing an image.

Rotate the image by 90 degrees (clockwise).

Follow up

Could you do this in-place?

My answer

for i in range(0, n/2):
for j in range(i, n-1-i):
mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j], mat[n-1-j][i]
= mat[n-1-j][i], mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j]


My code only beat 50% PythonSubmissions.

Full code


#!/usr/bin/env python

count = 1
mat = []
n=4
for i in range(0, n):
tmp = []
for j in range(0, n):
tmp.append(count)
count += 1
mat.append(tmp)

for i in range(0, n):
print mat[i]

#strat exchang

for i in range(0, n/2): for j in range(i, n-1-i): mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j], mat[n-1-j][i] = mat[n-1-j][i], mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j]

for i in range(0, n):
print mat[i]


Extension

Rotate the image by 180 degrees

for i in range(0, n/2):
for j in range(i, n-1-i):
mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j], mat[n-1-j][i]
= mat[n-1-i][n-1-j], mat[n-1-j][i], mat[i][j], mat[j][n-1-i]


Rotate the image by 270 degrees

for i in range(0, n/2):
for j in range(i, n-1-i):
mat[i][j], mat[j][n-1-i], mat[n-1-i][n-1-j], mat[n-1-j][i]
= mat[j][n-1-i], mat[n-1-i][n-1-j], mat[n-1-j][i], mat[i][j]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息