From 46482f958fc0b1ba7c677164ad45637ec33de13b Mon Sep 17 00:00:00 2001 From: VM <69084915+MD571@users.noreply.github.com> Date: Mon, 17 Oct 2022 07:36:08 +0530 Subject: [PATCH] Spiral_Matrix.cpp --- algorithms/CPlusPlus/Arrays/Spiral_Matrix.cpp | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 algorithms/CPlusPlus/Arrays/Spiral_Matrix.cpp diff --git a/algorithms/CPlusPlus/Arrays/Spiral_Matrix.cpp b/algorithms/CPlusPlus/Arrays/Spiral_Matrix.cpp new file mode 100644 index 00000000..7e0f0a6f --- /dev/null +++ b/algorithms/CPlusPlus/Arrays/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<