[leetcode]54. Spiral Matrix -- JavaScript 代码

迈不过友情╰ 2022-07-17 00:21 287阅读 0赞
  1. /** * @param {number[][]} matrix * @return {number[]} */
  2. var spiralOrder = function(matrix) {
  3. var ret = [];
  4. var row = matrix.length;
  5. if(row === 0){
  6. return ret;
  7. }
  8. var col = matrix[0].length;
  9. if(col === 0){
  10. return ret;
  11. }
  12. var len = row * col;
  13. var cur_row = 0;
  14. var cur_col = 0;
  15. var pos = 1;
  16. for(var i=0;i<len;i++){
  17. switch(pos){
  18. case 1:
  19. ret.push(matrix[cur_row][cur_col]);
  20. matrix[cur_row][cur_col] = null;
  21. if(cur_col<col-1 && matrix[cur_row][cur_col+1]!==null){
  22. cur_col++;
  23. }else{
  24. pos = 2;
  25. cur_row++;
  26. }
  27. break;
  28. case 2:
  29. ret.push(matrix[cur_row][cur_col]);
  30. matrix[cur_row][cur_col] = null;
  31. if(cur_row<row-1 && matrix[cur_row+1][cur_col]!==null){
  32. cur_row++;
  33. }else{
  34. pos = 3;
  35. cur_col--;
  36. }
  37. break;
  38. case 3:
  39. ret.push(matrix[cur_row][cur_col]);
  40. matrix[cur_row][cur_col] = null;
  41. if(cur_col>0 && matrix[cur_row][cur_col-1]!==null){
  42. cur_col--;
  43. }else{
  44. pos = 4;
  45. cur_row--;
  46. }
  47. break;
  48. case 4:
  49. ret.push(matrix[cur_row][cur_col]);
  50. matrix[cur_row][cur_col] = null;
  51. if(cur_row>1 && matrix[cur_row-1][cur_col]!==null){
  52. cur_row--;
  53. }else{
  54. pos = 1;
  55. cur_col++;
  56. }
  57. break;
  58. }
  59. }
  60. return ret;
  61. };

这道题的算法比较容易,就是过程比较麻烦,需要细心。
使用pos来控制向哪个方向来寻找下一个数据;访问过的数据,就标空。

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读