螺旋矩阵

2023-08-27  本文已影响0人  1哥
image.png
image.png

要点:

  1. 4层循环:
    i. 第一次从左->右
    ii. 第二次从上->下
    iii. 第三次从右->左
    xi. 第四次从下到上
vector<int> spiralOrder(vector<vector<int>>& matrix)
{
    vector<vector<int>> mat;
 
    // 基本情况
    if (arr.size() == 0) {
        return mat;
    }
 
    // 构造一个 `M × N` 矩阵
    mat.resize(N, vector<int>(M));
 
    int top = 0, bottom = M - 1;
    int left = 0, right = N - 1;
 
    int index = 0;
 
    while (1)
    {
        if (left > right) {
            break;
        }
        // 打印第一行
        for (int i = left; i <= right; i++) {
            mat[top][i] = arr[index++];
        }
        top++;
 
        if (top > bottom) {
            break;
        }
        // 打印右列
        for (int i = top; i <= bottom; i++) {
            mat[i][right] = arr[index++];
        }
        right--;
 
        if (left > right) {
            break;
        }
        //打印底行
        for (int i = right; i >= left; i--) {
            mat[bottom][i] = arr[index++];
        }
        bottom--;
 
        if (top > bottom) {
            break;
        }
        //打印左列
        for (int i = bottom; i >= top; i--) {
            mat[i][left] = arr[index++];
        }
        left++;
    }
}
上一篇下一篇

猜你喜欢

热点阅读