מטריצה ספירלית
נתונה מטריצה m שורות, n עמודות. יש להדפיס את כל הערכים בסדר ספירלי.
- public IList<int> SpiralOrder(int[][] matrix) {
- IList<int> spiral = new List<int>();
- if(matrix.Length == 0)
- return spiral;
- int horizontal = matrix[0].Length;
- int vertical = matrix.Length;
- int left = 0;
- int top = 0
- while(horizontal > left || vertical > top){
- for(int i = left; i< horizontal && vertical > top; i++ )
- spiral.Add(matrix[top][i]);
- for(int i = top+1; i< vertical && horizontal > left;i++)
- spiral.Add(matrix[i][horizontal-1]);
- vertical--;
- horizontal--;
- for(int i = horizontal-1; i>left && vertical > top; i--)
- spiral.Add(matrix[vertical][i]);
- for(int i = vertical;i>top && horizontal>left; i--)
- spiral.Add(matrix[i][left]);
- left++;
- top++;
- }
- return spiral;
- }