转圈打印矩阵
来源:互联网 发布:java三级证书有用吗 编辑:程序博客网 时间:2024/05/13 01:19
【题目】
给定一个整型矩阵matrix,请按照转圈的方式打印它。
例如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
【要求】
额外空间复杂度为O(1)
【难度】1星
# -*- coding:utf-8 -*-
'''
C语言改编
cxy
主要思想:
tR,tC代表左上角坐标
dR,dC代表右下角坐标
取外层进行转圈打印后缩小圈进行里圈打印。
'''
# 定义一个函数,按照这个函数来进行圈缩小
def spiralOrder(matrix):
tR = 0
tC =0
dR =len(matrix) -1
dC =len(matrix[0]) -1
while(tR <= dRand tC <= dC):
printEdge(matrix,tR,tC,dR,dC)
tR += 1
tC +=1
dR -=1
dC -=1
# printEdge函数用于转圈打印
def printEdge(matrix,tR,tC,dR,dC):
iftR == dR:
fori inrange(tC,dC + 1):
print(matrix[tR][i])
eliftC == dC:
fori inrange(tR,dR + 1):
print(matrix[i][tC])
else:
curC = tC
curR = tR
whilecurC != dC:
print(matrix[tR][curC])
curC += 1
whilecurR != dR:
print(matrix[curR][dC])
curR += 1
whilecurC != tC:
print(matrix[dR][curC])
curC -= 1
whilecurR != tR:
print(matrix[curR][tC])
curR -= 1
if __name__in "__main__":
matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
print(spiralOrder(matrix))
- 转圈打印矩阵
- 转圈打印矩阵
- 转圈打印矩阵
- python---转圈打印矩阵
- 转圈打印矩阵
- 转圈打印矩阵
- 转圈打印矩阵或者生成转圈矩阵
- 数组与矩阵---转圈打印矩阵
- 常见面试算法之转圈打印矩阵
- 回旋矩阵 (就是转圈圈打印的,经典面试题)
- 面试算法①——转圈打印矩阵
- 转圈打印二维数组
- 转圈打印二维数组
- 矩阵转圈输出数字
- 牛客面试算法题精讲【个人总结】-矩阵的转圈、旋转90度、“之”字形打印
- java ‘转圈’打印二维数组
- 转圈打印数组与之字形打印数组
- 二维数组的转圈打印和“之”字打印
- android 系统架构
- 结合redis设计与实现的redis源码学习-10-hyperloglog(基数统计)
- egret白鹭引擎出现不能操作数组情况的解决方法
- 高级聚合函数-CUBE
- 使用struts实现SSH整合
- 转圈打印矩阵
- 吴恩达《神经网络与深度学习》课程笔记归纳(一)
- python中PIL.Image和OpenCV图像格式相互转换
- Gnu系统
- 自学:运算符优先级概念、 for 循环的使用、数组的概念
- java中Map中的keySet,values,entrySet的区别
- 搜索算法king——A*初识
- 九九乘法表-正三角和倒三角的实现
- office2013 Word 在试图打开文件时遇到错误一种解决方法