💡Задача: "Матрица спирали"

💡Задача: "Матрица спирали"

https://t.me/csharp_ci


Условие задачи: дан двумерный массив, надо вернуть все его элементы в "спиральном" порядке по часовой стрелке. 

Пример:

Ввод: matrix = [[1,2,3],[4,5,6],[7,8,9]]

Вывод: [1,2,3,6,9,8,7,4,5]


Ввод: matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

Вывод: [1,2,3,4,8,12,11,10,9,5,6,7]


class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> jat;
        int n=matrix.size(),m=matrix[0].size();
        int up=0,left=0,right=m-1,down=n-1;
        while(jat.size()<m*n)
        {
            for(int i=left;i<=right&&jat.size()<m*n;i++) jat.push_back(matrix[up][i]);
            for(int i=up+1;i<=down-1&&jat.size()<m*n;i++) jat.push_back(matrix[i][right]);
            for(int i=right;i>=left&&jat.size()<m*n;i--) jat.push_back(matrix[down][i]);
            for(int i=down-1;i>=up+1&&jat.size()<m*n;i--) jat.push_back(matrix[i][left]);
            left++;
            right--;
            up++;
            down--;
        }return jat;
        
    }
};

Временная сложность: O(n^2)


Пространственная сложность: O(n)


Report Page