From dbc69aae3380845d3483116820a89a5f9b625ac9 Mon Sep 17 00:00:00 2001 From: Vinay Mallela <69084915+MD571@users.noreply.github.com> Date: Sat, 28 Oct 2023 22:26:19 +0530 Subject: [PATCH] Create spiral_matrix.cpp --- C++/spiral_matrix.cpp | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 C++/spiral_matrix.cpp diff --git a/C++/spiral_matrix.cpp b/C++/spiral_matrix.cpp new file mode 100644 index 0000000..3727a62 --- /dev/null +++ b/C++/spiral_matrix.cpp @@ -0,0 +1,73 @@ +/Problem: Given an m x n matrix, return all elements of the matrix in spiral order. +/* +Input: +n=3 m=3 +Matriz: +2 3 5 +19 23 7 +17 13 11 +Output: +vector => 2 3 5 7 11 13 17 19 23 +*/ +#include +#include +#include +using namespace std; +vector SpiralOrder(vector> Mat,int n,int m) { + int val = 0,a[n][m]; + int k = 0, l = 0; + /* k - starting row index + n - ending row index + l - starting column index + m - ending column index + i - iterator + */ + vector v; + //Spiral Form Order: (right->down->left->up->right->..->end) + while (k < n && l < m){ + for (int i = l; i < m; ++i){//Right + v.push_back( Mat[k][i]); + } + k++; + for (int i = k; i < n; ++i){//Down + v.push_back(Mat[i][m-1]); + } + m--; + if (k < n) + { + for (int i = m-1; i >= l; --i){//left + v.push_back(Mat[n-1][i]); + } + n--; + } + if (l < m) + { + for (int i = n-1; i >= k; --i){//up + v.push_back( Mat[i][l]); + } + l++; + } + } + return v; +} +int main() +{ + int m,n,i,j=0; + cin>>n>>m; + vector> Mat; + for(i=0;ia; + for(j=0;j>v; + a.push_back(v); + } + Mat.push_back(a); + } + vector ans=SpiralOrder(Mat,n,m); + for(auto x:ans){ + cout<