美文网首页
螺旋矩阵

螺旋矩阵

作者: 1哥 | 来源:发表于2023-08-27 00:50 被阅读0次
    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++;
        }
    }
    

    相关文章

      网友评论

          本文标题:螺旋矩阵

          本文链接:https://www.haomeiwen.com/subject/szwimdtx.html