Spiral Matrix (LeetCode)
Question:
https://oj.leetcode.com/problems/spiral-matrix/
没有算法,就是一圈一圈的取值。加上考虑一些边界条件。
class Solution { public: vector<int> spiralOrder(vector<vector<int> > &matrix) { vector<int> result; int rowCount = matrix.size(); if (rowCount == 0) return result; int colCount = matrix[0].size(); int row_start = 0; int row_end = rowCount-1; int col_start = 0; int col_end = colCount-1; while (row_start <= row_end && col_start <= col_end) { spiral(matrix, result, row_start, row_end, col_start, col_end); row_start++; row_end--; col_start++; col_end--; } return result; } void spiral(vector<vector<int>>& matrix, vector<int>& result, int row_start, int row_end, int col_start, int col_end) { for (int i = col_start; i <= col_end; i++) result.push_back(matrix[row_start][i]); for (int i = row_start+1; i <= row_end-1; i++) result.push_back(matrix[i][col_end]); if (row_end != row_start) { for (int i = col_end; i >= col_start; i--) { result.push_back(matrix[row_end][i]); } } if (col_end != col_start) { for (int i = row_end-1; i >= row_start+1; i--) result.push_back(matrix[i][col_start]); } } };
浙公网安备 33010602011771号