מרץ.14

מטריצה ספירלית

מטריצה ספירלית

נתונה מטריצה m שורות, n עמודות. יש להדפיס את כל הערכים בסדר ספירלי.

  1. public IList<int> SpiralOrder(int[][] matrix) {
  2. IList<int> spiral = new List<int>();
  3. if(matrix.Length == 0)
  4. return spiral;
  5.  
  6. int horizontal = matrix[0].Length;
  7. int vertical = matrix.Length;
  8. int left = 0;
  9. int top = 0
  10.  
  11. while(horizontal > left || vertical > top){
  12. for(int i = left; i< horizontal && vertical > top; i++ )
  13. spiral.Add(matrix[top][i]);
  14. for(int i = top+1; i< vertical && horizontal > left;i++)
  15. spiral.Add(matrix[i][horizontal-1]);
  16. vertical--;
  17. horizontal--;
  18. for(int i = horizontal-1; i>left && vertical > top; i--)
  19. spiral.Add(matrix[vertical][i]);
  20.  
  21. for(int i = vertical;i>top && horizontal>left; i--)
  22. spiral.Add(matrix[i][left]);
  23. left++;
  24. top++;
  25. }
  26. return spiral;
  27. }


תגיות:
שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה