class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (matrix.empty())
return vector<int>(); vector<int> ret; //输入矩阵行数
int m = matrix.size() - ; //输入矩阵的列数
int n = matrix[].size() - ; for (int x = , y = ; x <= m && y <= n; x++, y++)
{
//输出矩阵首行
for(int j=y ; j<=n ; ++j)
{
ret.push_back(matrix[x][j]);
}//while //输出矩阵最右列
for (int i = x + ; i <= m; ++i)
{
ret.push_back(matrix[i][n]);
}//while //输出矩阵最底行
for (int j = n - ; j >= y && x != m; --j)
{
ret.push_back(matrix[m][j]);
} //输出矩阵最左列
for (int i = m - ; i > x && y != n; --i)
{
ret.push_back(matrix[i][y]);
} m--;
n--;
}//for return ret;
}
};

补充一个使用dfs思想的python实现代码:

 class Solution:
# matrix类型为二维列表,需要返回列表
def __init__(self):
self.result = []
self.visited = [] def goRight(self,matrix,i,j,row,column,direct):
if j + < column and self.visited[i][j+] == :
self.result.append(matrix[i][j+])
self.visited[i][j+] =
self.dfs(matrix,i,j+,row,column,direct) def goDown(self,matrix,i,j,row,column,direct):
if i + < row and self.visited[i+][j] == :
self.result.append(matrix[i+][j])
self.visited[i+][j] =
self.dfs(matrix,i+,j,row,column,direct) def goLeft(self,matrix,i,j,row,column,direct):
if j - >= and self.visited[i][j-] == :
self.result.append(matrix[i][j-])
self.visited[i][j-] =
self.dfs(matrix,i,j-,row,column,direct) def goUp(self,matrix,i,j,row,column,direct):
if i - >= and self.visited[i-][j] == :
self.result.append(matrix[i-][j])
self.visited[i-][j] =
self.dfs(matrix,i-,j,row,column,direct) def dfs(self,matrix,i,j,row,column,direct):
if direct == :
self.goRight(matrix,i,j,row,column,)
self.goDown(matrix,i,j,row,column,)
self.goLeft(matrix,i,j,row,column,)
self.goUp(matrix,i,j,row,column,)
if direct == :
self.goDown(matrix,i,j,row,column,)
self.goLeft(matrix,i,j,row,column,)
self.goUp(matrix,i,j,row,column,)
self.goRight(matrix,i,j,row,column,)
if direct == :
self.goLeft(matrix,i,j,row,column,)
self.goUp(matrix,i,j,row,column,)
self.goRight(matrix,i,j,row,column,)
self.goDown(matrix,i,j,row,column,)
if direct == :
self.goUp(matrix,i,j,row,column,)
self.goRight(matrix,i,j,row,column,)
self.goDown(matrix,i,j,row,column,)
self.goLeft(matrix,i,j,row,column,) def spiralOrder(self, matrix):
row = len(matrix)
if row == :
return []
column = len(matrix[])
self.visited = [[ for c in range(column)] for r in range(row)]
self.result.append(matrix[][])
self.visited[][] =
self.dfs(matrix,,,row,column,)
return self.result
# write code here

最新文章

  1. 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
  2. React组件属性部类(propTypes)校验
  3. lintcode bugfree and good codestyle note
  4. 邻接表无向图(一)之 C语言详解
  5. 使用 jQuery &amp; CSS3 实现翻转的作品集滑块
  6. x01.os.1: BIOS 中断
  7. js 判断数组的值是否有重复
  8. 从Android系统出发,分析Android控件构架
  9. 第1章 Java中常用字符串方法总结
  10. Swift开发学习-03 Swift技巧
  11. Git与Repo入门(转载)
  12. trackr: An AngularJS app with a Java 8 backend – Part IV 实践篇
  13. fedora 23中配置tftp-server
  14. hadoop 2.6.0上安装sqoop-1.99.6-bin-hadoop200
  15. c++ namespace命名空间详解
  16. JCombox
  17. Windows下将ImageMagick移植到Android平台
  18. PAT (Advanced Level) 1049. Counting Ones (30)
  19. 在ASP.NET Core中使用Apworks开发数据服务:对HAL的支持
  20. Vijos 1002 过河 状态压缩DP

热门文章

  1. 93服务器上获取json数据
  2. hive 数据导出三种方式
  3. FastAdmin 提示框 toastr 改变文字
  4. 修改 input 框输入光标的样式
  5. windows dos窗口下如何复制和粘贴
  6. JMeter--使用HTTP信息头管理器
  7. 从Vue文件到Html文件
  8. VS2010程序调试
  9. onload属性使用方法
  10. Unity3D NGUI Sprite精灵动画