剑指offer python版 顺时针打印矩阵

def aa(matrix):
    rows=len(matrix)
    cols=len(matrix[0])
    start=0
    ret=[]
    while start*2 <rows and start*2<cols:
        bb(matrix,rows,cols,start,ret)
        start +=1

    return ret

def bb(matrix,rows,cols,start,ret):
    row=rows-start-1
    col=cols-start-1

    for c in range(start,col+1):
        ret.append(matrix[start][c])

    if start <row:
        for r in range(start+1,row+1):
            ret.append(matrix[r][col])

    if start <row and start<col:
        for c in range(start,col)[::-1]:
            ret.append(matrix[row][c])

    if start <row and start<col:
        for r in range(start+1,row)[::-1]:
            ret.append(matrix[r][start])

a=[[1,2,3],
   [4,5,6],
   [7,8,9]]

print(aa(a))

原文地址:https://www.cnblogs.com/xzm123/p/9854659.html

时间: 2024-07-28 13:43:48

剑指offer python版 顺时针打印矩阵的相关文章

剑指offer之【顺时针打印矩阵】

题目: 顺时针打印矩阵 链接: https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a?tpId=13&tqId=11172&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7

剑指Offer对答如流系列 - 顺时针打印矩阵

面试题29:顺时针打印矩阵 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 比如:输入以下矩阵 打印出的数字为1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 问题分析 每次打印都是打印外面的一圈,每次打印矩阵的起点横纵坐标都相同(横纵坐标值均设置为start),其余三个角的坐标都与start有关. 对于start而言,start*2的值小于行数和列数时才需要继续打印. 这样一分析,发现整个数学模型都建立起来了. 问题解答 public vo

剑指offer系列——19.顺时针打印矩阵

Q:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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. A: vector<int> printMatrix(vector<vector<int> > matrix) { int size1 = matrix[0].size(); //列数 int si

剑指offer python版 二叉搜索树与双向链表

from collections import deque class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Tree(object): """ 非二叉搜索树,建树的时候values中的顺序需要注意 之后有时间会改成二叉搜索树 """ def __init__(self): self.root =

剑指offer python版 二维数组的查找

def find_integer(matrix, num): """ :param matrix: [[]] :param num: int :return: bool """ if not matrix: return False rows, cols = len(matrix), len(matrix[0]) row, col = rows - 1, 0 while row >= 0 and col <= cols - 1: if

剑指offer python版 实现单例模式

class singleTon(object): def __init__(self,x): self.val=x single2=singleTon(2) a=single2 b=single2 print(a==b) print(a.val) a.val=334 print(b.val) 原文地址:https://www.cnblogs.com/xzm123/p/9847787.html

剑指offer python版 替换空格

print('dd dd add'.replace(' ','dd')) 原文地址:https://www.cnblogs.com/xzm123/p/9847854.html

剑指offer python版 删除链表中重复的结点

class ListNode(object): def __init__(self,x): self.val=x self.next=None class Link(object): def __init__(self,values=None): self.nodes=self.set_link(values) if values else None def get_link(self): return self.nodes def set_link(self,values): if not v

剑指offer python版 反转链表

class ListNode(object): def __init__(self,x): self.val=x self.next=None class Link(object): def __init__(self,values=None): self.nodes=self.set_link(values) if values else None def get_link(self): return self.nodes def set_link(self,values): if not v