关闭

leetcode 54 : Spiral Matrix

标签: 算法面试leetcode
320人阅读 评论(0) 收藏 举报
分类:

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 {
public:
    vector dfs(vector>& matrix, int dp){
		vector ret;
		//每递归,顺时针一次 剔除 上下两行,左右两列,所以是-2dp
		if ( (int)matrix.size()-2*dp <= 0  ||  (int)matrix[0].size()-2*dp <= 0 ){
			return ret;
		}

		int colum = matrix[dp].size() - dp - 1;
		int row = matrix.size() - dp - 1;

		for (int i = dp; i <= colum; i++)//上行
			ret.push_back(matrix[dp][i]);
		for (int i = dp+1; i <= row; i++)// 右列
			ret.push_back(matrix[i][colum]);
		for (int i = colum - 1; row>dp && i >= dp; i--) // 下行row>上行dp ,不能和上面的行重了
			ret.push_back(matrix[row][i]);
		for (int i = row - 1; dp dp; i--)//左列 dp< 右列colum ,不能和右列重了
			ret.push_back(matrix[i][dp]);

		vector tmpVec = dfs(matrix, dp + 1);
		ret.insert(ret.end(), tmpVec.begin(), tmpVec.end());
		return ret;
	}
	vector spiralOrder(vector>& matrix) {
		return dfs(matrix, 0);
	}
};
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:142331次
    • 积分:3060
    • 等级:
    • 排名:第12853名
    • 原创:154篇
    • 转载:115篇
    • 译文:0篇
    • 评论:2条
    最新评论