打印二维数组

打印二维数组

class Solution:

# matrix类型为二维列表,需要返回列表

def printMatrix(self, matrix):

# write code here

result = []

while(matrix):

result+=matrix.pop(0)

if not matrix or not matrix[0]:

break

matrix = self.turn(matrix)

return result

def turn(self,matrix):

num_r = len(matrix)

num_c = len(matrix[0])

newmat = []

for i in range(num_c):

newmat2 = []

for j in range(num_r):

newmat2.append(matrix[j][i])

newmat.append(newmat2)

newmat.reverse()

return newmat

新:可以模拟魔方逆时针旋转的方法,一直做取出第一行的操作例如1 2 34 5 67 8 9输出并删除第一行后,再进行一次逆时针旋转,就变成:6 95 84 7常规操作:设置上下左右四个指针,按圈数来打印。偶数行矩阵可以通过。奇数行矩阵会剩中间一个不打印,why

arr = [[1, 2, 3, 4, 5],

[6, 7, 8, 9, 10],

[11, 12, 13, 14, 15],

[16, 17, 18, 19, 20],

[21, 22, 23, 24, 25]]

left = 0

top = 0

right = len(arr[0])-1

bottom = len(arr)-1

res = []

while left <= right and top <= bottom:

i = left

j = top

k = right

t = bottom

while i < right: # 第一行取到right之前

res.append(arr[top][i])

i += 1 # 第一行最后一个不取

while j < bottom: # 最右边的一列取到bottom之上

res.append(arr[j][right])

j += 1

while k > left: # 最下面一行 取到left之前

res.append(arr[bottom][k])

k -= 1

while t > top: # 最左边一列 取到top之下

res.append(arr[t][left])

t -= 1

left += 1

top += 1

right -= 1

bottom -= 1

print(res)

之字形打印二维数组:

重点是如何打印出二维数组的左右、上下半角。设置转向标记控制打印方向。

# arr = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

arr = [[1, 2, 3, 4, 5],

[6, 7, 8, 9, 10],

[11, 12, 13, 14, 15],

[16, 17, 18, 19, 20],

[21, 22, 23, 24, 25]]

n = len(arr)

res = []

flag = 1 # 转向标记

for x in range(n): # 打印左上半角

i = 0

while i <= x:

if flag == 1:

res.append(arr[i][x-i])

else:

res.append(arr[x-i][i])

i += 1

flag = -flag

"""

for i in range(n): # 打印数组左上半角

for j in range(i+1):

if flag == 1:

res.append(arr[j][i-j])

else:

res.append(arr[i-j][j])

flag = -flag"""

for x in range(n, 2*n-1): # 右下半角

i = n-1

while i <= n and x-i < n: # 第i行第x-i个

if flag == -1:

res.append(arr[i][x-i])

else:

res.append(arr[x-i][i])

i -= 1

flag = -flag

print(res)

相关推荐

末世盗贼行
BSt365提现

末世盗贼行

📅 07-07 👁️ 2976
如何编辑exe文件
0755 36553288

如何编辑exe文件

📅 07-07 👁️ 111