腾讯模拟笔试,最后一题js编程怎么实现一个蛇形矩阵

题目描述:
蛇形矩阵是从1开始的自然数依次排列成的一个矩阵
输入描述:
矩阵的大小N(N<20)
输出描述:
输出一个蛇形矩阵,注意:每行行末没有空格,最后一行没有换行。
样式输入:
5
样式输出:
1  2  3  4  5 
22 23 24 25 6 
21 20 19 18  7
14 15 16 17 8 
13 12 11 10  9
#前端工程师#
全部评论
int n = in.nextInt(); //输出的矩阵 int arr[][] = new int[n][n]; int count = n * n; int num = 1; //位置索引 int x = 0; int y = 0; while (count > 0) { //向右走 do { arr[x][y] = num++; count--; y++; } while (y < n && arr[x][y] == 0); if (count == 0) break; x++; y--; //向下走 do { arr[x][y] = num++; count--; x++; } while (x < n && arr[x][y] == 0); if (count == 0) break; y--; x--; //向左走 do { arr[x][y] = num++; count--; y--; } while (y >= 0 && arr[x][y] == 0); if (count == 0) break; y++; x--; //像上走 do { arr[x][y] = num++; count--; x--; } while (x >= 0 && arr[x][y] == 0); if (count == 0) break; x++; y++; }
点赞 回复
分享
发布于 2016-09-02 10:18
剑指offer上有类似的
点赞 回复
分享
发布于 2016-09-02 10:05
滴滴
校招火热招聘中
官网直投
我想问下js怎么读取输入?我好想没找到
点赞 回复
分享
发布于 2016-09-02 10:15
Leetcode 有,分层写入,我记得是。
点赞 回复
分享
发布于 2016-09-02 10:16
坑啊,昨晚我没有看到n的范围,还一直在想,不知道n的范围,怎么打印蛇形数组
点赞 回复
分享
发布于 2016-09-02 11:44
function spiral(n){     var arr = [],count = n*n,num = 1,         start = 0,end = n-1;            for(var k=0;k<n;k++){         arr[k] = [];     }     while(start < end){         for(var j = start; j < end +1 ;j ++){             arr[start][j] = num ++;         }         for(var i = start + 1; i < end +1;i ++){             arr[i][end] = num ++;         }         for(var y = end - 1; y > start - 1;y --){             arr[end][y] = num ++;         }         for(var x = end - 1; x > start;x --){             arr[x][start] = num ++;         }         start += 1;         end -= 1;         if(start == end){             arr[start][end] = count;         }     }     return arr; }
点赞 回复
分享
发布于 2016-09-02 11:54

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务