LeetCode54——Spiral Matrix

来源:互联网 发布:举报网络诈骗怎么写 编辑:程序博客网 时间:2024/05/17 00:59

LeetCode54——Spiral Matrix

还是用图来表述:


从左上开始,按照箭头的顺序,进行4个for循环,完成一圈,一共用count = min(row,col)/2  圈。

注意最后的红色箭头,如果行数和列数中较小的数是奇数,就会出现上述情况。

这个时候咱们在最后补上就好

代码:

class Solution {public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int> result;if(matrix.empty())    return result;int m = matrix.size();//m行int n = matrix[0].size();//n列int count = min(m,n)/2;//count 圈int mod = min(m, n) % 2;for (int i = 0; i < count; i++){for (int j = i; j < n - i - 1; j++){result.push_back(matrix[i][j]);//从左到右}for (int j = i; j <m-1-i ; j++){result.push_back(matrix[j][n-1-i]);//从上到下}for (int j = n-i-1; j >=i+1 ;j--){result.push_back(matrix[m-i-1][j]);//从右到左}for (int j = m-1-i;j>=i+1;j--){result.push_back(matrix[j][i]);//从下到上}}if (mod == 1){if (n == m)//相当于方阵,需要在中间补上result.push_back(matrix[count][count]);else if (n > m){for (int j = count; j < n - count; j++)result.push_back(matrix[count][j]);}else{for (int j = count;j<m-count;j++)result.push_back(matrix[j][count]);}}return result;}};


0 0
原创粉丝点击