美文网首页
螺旋矩阵

螺旋矩阵

作者: 西西的博客 | 来源:发表于2019-10-12 14:40 被阅读0次

写在前面

2019年,年初到蚂蚁金服面试测试工程师的职位,现场有一道笔试题是求螺旋矩阵,当时大概和面试官说了一下思路,当时说的是用搜索的方法。还给面试官讲解了一下,写了一下伪代码。当时面试官问还有其他方法吗?我说没有了.....,你有其他更好的方法吗?当时她,啥也没有说

今天有空,突然想起了这事,在力扣上也看到了这道题,就写了一下代码。方法确实可行

题目

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

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

思路

搜索的开始点为[x,y],搜索的方向按照→,↓,←,↑(右、下、左、上。[x+1, y],[x,y+1][x-1,y],[x,y-1]),四个方向循环搜索,每个方向搜索的结束条件是:
1、当前点已经到达边界。比如,现在已经到达方向↓的边界,下个方向就应该是←
2、当前点已经设置过值

代码

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        List = [ [ 0 for i in range(n)] for j in range(n)]; #初始化矩阵
        h = [1,0, -1, 0];
        l = [0, 1, 0, -1];
        x = y = 0;
        index = 1;
        flag = 0;
        for  i in range(n*n):
            if List[x][y] == 0:
                List[x][y] = index;
                index += 1;
                # 判断是否到边界,或者是设置过值
                if y+h[flag] == n or x+l[flag]==n or y+h[flag] == -1 or x+l[flag]==-1 or  List[x+l[flag]][y+h[flag]]!=0:
                    flag = (flag+1)%4;
                y += h[flag];
                x += l[flag];
        return  List; 

相关文章

  • Python实现螺旋矩阵

    螺旋矩阵 什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大...

  • 螺旋矩阵

    螺旋矩阵 1.想法: 对于矩阵的螺旋我们可以规约为4个方向 2.代码:

  • 螺旋矩阵

    递归 非递归

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    题目描述:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。...

  • 螺旋矩阵

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例 1...

  • 螺旋矩阵

    原文地址,我的个人博 1.题目 2.分析 上图展示了一轮完整的顺时针螺旋遍历的过程,整个过程可以分为如图所示的四个...

  • 螺旋矩阵

    写在前面 2019年,年初到蚂蚁金服面试测试工程师的职位,现场有一道笔试题是求螺旋矩阵,当时大概和面试官说了一下思...

  • 螺旋矩阵

    题目信息 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 ...

  • 16/17,螺旋矩阵Ⅰ/Ⅱ/数组与字符串

    螺旋矩阵 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。...

网友评论

      本文标题:螺旋矩阵

      本文链接:https://www.haomeiwen.com/subject/zgpqmctx.html