https://leetcode-cn.com/problems/spiral-matrix-ii/

# -*- coding:utf-8 -*-

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        def get_num():
            res = num_list[-1]
            num_list.remove(res)
            return res
        num_list = [i for i in range(1, n * n + 1)]
        res_list = [[get_num()]]
        for i in range(2 * n - 2):
            temp_list = []
            # 加
            for j in range(len(res_list[0])):
                temp_list.insert(0, get_num())
            res_list.insert(0, temp_list)
            if len(num_list) == 0:
                return res_list
            # 翻
            temp_iter = res_list.__iter__()
            res_list = [i for i in zip(*temp_iter)]
            # 倒
            for j in range(len(res_list)):
                res_list[j] = res_list[j][::-1]
        return res_list
if __name__ == '__main__':
    n = 1
    print(Solution().generateMatrix(n))

思路:0054的逆过程,0054的思路是截取、倒转、翻转。因此在这里我们就需要进行加、翻转、倒转。

分类: 算法

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注