LeetCode-54.Spiral Matrix I

来源:互联网 发布:无言网络歌手歌词 编辑:程序博客网 时间:2024/05/21 17:19
class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> result;
        if(matrix.size() == 0 || matrix[0].size() == 0)           //对输入参数的检查
            return result;
        
        
        int rowBegin = 0;
        int rowEnd = matrix.size() - 1;
        int colBegin = 0;
        int colEnd = matrix[0].size()-1;
        result.resize((rowEnd+1)*(colEnd+1));
        int cnt = 0;

        while (rowBegin <= rowEnd  && colBegin <= colEnd)
        {
            for (int i = colBegin; i <= colEnd ; i++)           //traverse right
            {
                //result.push_back(matrix[rowBegin][i]);
                result[cnt] = matrix[rowBegin][i];
                cnt++;
            }
            rowBegin++;

            for (int i = rowBegin; i <= rowEnd; i++)            // traverse down
            {
                //result.push_back(matrix[i][colEnd]);
                result[cnt] = matrix[i][colEnd];
                cnt++;
            }
            colEnd--;

            if (rowBegin <= rowEnd)
            {
                for (int i = colEnd; i >= colBegin; i--)        //traverse left
                {
                    //result.push_back(matrix[rowEnd][i]);
                    result[cnt] = matrix[rowEnd][i];
                    cnt++;
                }
            }
            rowEnd--;

            if (colBegin <= colEnd)                             //traverse  up
            {
                for (int i = rowEnd; i >= rowBegin; i--)
                {
                    //result.push_back(matrix[i][colBegin]);
                    result[cnt] = matrix[i][colBegin];
                    cnt++;
                }
            }
            colBegin++;


        }
        return result;
        
    }
};

0 0
原创粉丝点击