《劍指offer》——順時針打印矩陣

可以用一個循環來打印矩陣,每次打印矩陣中的一個圈。
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

/*
輸入一個矩陣matrix,將其按順時針順序存入一維數組array中
*/
vector<int> printMatrix(vector<vector<int>> matrix) 
{
    vector<int> array;//一維數組
    if(matrix.empty())
        return array;//如果矩陣爲空,輸出空的一維數組
    int row = matrix.size();//矩陣的行寬
    int col = matrix[0].size();//矩陣的列寬
    int start = 0;//每一圈的起始座標
    while(row > start * 2 && col > start * 2)//總的結束條件
    {
        int endX = col - start - 1;//每行結束的座標
        int endY = row - start - 1;//每列結束的座標

        for(int i = start; i <= endX; i++)//從左向右打印
            array.push_back(matrix[start][i]);

        if(start < endY)//從上向下打印
            for(int i = start + 1; i <= endY; i++)
                array.push_back(matrix[i][endX]);

        if(start < endX && start < endY)//從右向左打印
            for(int i = endX - 1; i >= start; i--)
                array.push_back(matrix[endY][i]);

        if(start < endX && start < endY - 1)//從下向上打印
            for(int i = endY - 1; i > start; i--)
                array.push_back(matrix[i][start]);
        start++;//起始座標自增
    }
    return array;//返回一維數組 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章