我正在尝试解决以下算法,但被卡住了。希望您能提供帮助。
根据给出:
我应该编写一个函数,该函数返回内部矩阵的外层中所有元素的列表。如果没有元素,则返回一个空列表。
在每次迭代中,内部矩阵的大小都会变大,并包括以前的内部矩阵+外层。
例如:
通过给定黑色主矩阵和红色内部矩阵,返回标记为黄色的元素。继续,直到返回一个空列表。
我被困在哪里
通过增加内部矩阵的范围+1并比较主矩阵和内部矩阵的边缘,我可以轻松找到外层的元素。 但是,我陷入了一般如何增加循环(增加层数)的困境。 顺便说一句,我试图避免递归的解决方案。
答案 0 :(得分:1)
如果我正确理解了您的问题,则只需跟踪内部矩阵分别为(y1,x1)和(y2,x2)的左上角和右下角的坐标即可。然后,您可以轻松地获取外层并按如下所示扩展内部矩阵:
获取外层:这些元素的坐标为
展开内部矩阵:您只需要更新角坐标
然后重复直到(y1,x1)==(0,0)和(y2,x2)==(N-1,N-1)