• [leetcode]Spiral Matrix @ Python


    原题地址:https://oj.leetcode.com/problems/spiral-matrix/

    题意:

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

    For example,
    Given the following matrix:

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

    You should return [1,2,3,6,9,8,7,4,5].

    解题思路:来段精巧的代码。

    代码:

    class Solution:
        # @param matrix, a list of lists of integers
        # @return a list of integers
        def spiralOrder(self, matrix):
            if matrix == []: return []
            up = 0; left = 0
            down = len(matrix)-1
            right = len(matrix[0])-1
            direct = 0  # 0: go right   1: go down  2: go left  3: go up
            res = []
            while True:
                if direct == 0:
                    for i in range(left, right+1):
                        res.append(matrix[up][i])
                    up += 1
                if direct == 1:
                    for i in range(up, down+1):
                        res.append(matrix[i][right])
                    right -= 1
                if direct == 2:
                    for i in range(right, left-1, -1):
                        res.append(matrix[down][i])
                    down -= 1
                if direct == 3:
                    for i in range(down, up-1, -1):
                        res.append(matrix[i][left])
                    left += 1
                if up > down or left > right: return res
                direct = (direct+1) % 4
  • 相关阅读:
    进程
    并发编程小结
    操作系统发展史
    基于socketsever实现并发的socket编程
    UDP套接字
    粘包问题及解决
    socket套接字编程
    TCP协议与三次握手四次挥手
    OSI七层协议
    互联网的组成
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3769829.html
Copyright © 2020-2023  润新知