美文网首页
面试题之打印螺旋数组

面试题之打印螺旋数组

作者: he_321 | 来源:发表于2016-10-15 16:53 被阅读0次

今天看到一道面试题,打印螺旋数组,具体打印结果如下图所示:

结果样式

之后使用java代码实现了一下,具体代码如下所示。

package test;

public class PrintTest {

public static void main(String[] args) {

PrintTest a = new PrintTest(5,9);

int[][] result = a.fun();

for(int i = 0; i < result.length; i ++){

for (int j = 0; j < result[i].length; j++) {

System.out.print(result[i][j] + "  ");

}

System.out.println();

}

}

PrintTest(int width, int leng){

this.leng = leng;

this.width = width;

this.array = new int[width][leng];

}

int leng;//要打印的矩形的长度

int width;//要打印的矩形的宽度

int currentValue = 1;//当前要填的数字

boolean xIsAdd = true;//判断x增还是减

boolean yIsAdd = true;//判断y增还是减

boolean circleX = true;//是否循环X

int[][] array;//创建的数组

int x = 0;//当前数字放的位置

int y = 0;

public int[][] fun() {

if (currentValue > width * leng) {

return array;

}

if (circleX) {

//循环x

if (xIsAdd) {

//x循环增加

for (; x < leng && array[y][x] == 0;x++) {

array[y][x] = currentValue;

currentValue++;

}

xIsAdd = false;//循环结束后将x循环增加置为循环减少

circleX = false;//下次循环y

x--;

y++;

return fun();

}else {

//x循环减少

for (; x >= 0 && array[y][x] == 0; x--) {

array[y][x] = currentValue;

currentValue++;

}

xIsAdd = true;//循环结束后将x循环减少置为循环增加

circleX = false;//下次循环y

x++;

y--;

return fun();

}

}else {

//循环y

if (yIsAdd) {

//y增加循环

for (; y < width && array[y][x] == 0; y++) {

array[y][x] = currentValue;

currentValue++;

}

yIsAdd = false;//循环结束后将y循环增加置为循环减少

circleX = true;//下次循环x

y--;

x--;

return fun();

}

else {

//y减少循环

for (; y >= 0 && array[y][x] == 0; y--) {

array[y][x] = currentValue;

currentValue++;

}

yIsAdd = true;//循环结束后将y循环减少置为循环增加

circleX = true;//下次循环x

y++;

x++;

return fun();

}

}

}

}

感觉比较麻烦,谁有简单的方法,可以分享给我,谢谢。

相关文章

  • 面试题之打印螺旋数组

    今天看到一道面试题,打印螺旋数组,具体打印结果如下图所示: 之后使用java代码实现了一下,具体代码如下所示。 p...

  • spiral matrix

    给定一个n*m的数组然后螺旋打印:

  • First week can't solve.

    螺旋数组 这道题让我们搓一个螺旋丸,将一个矩阵按照螺旋顺序打印出来,我们只能一条边一条边的打印,首先我们要从给定的...

  • 今日头条面试题

    二维数组螺旋打印 def rotate(matrix): m,k,count=len(maxtrix),0,1...

  • 《剑指Offer》-Exercise(C语言)

    面试题4:二维数组中的查找 面试题6:从尾到头打印链表 单链表从尾到头打印(用栈或递归) 单链表结构 面试题7:重...

  • 剑指offer面试题分类总结

    数组: 面试题3:数组中重复的数字面试题4:二维数组中的查找面试题21:调整数组顺序使奇数位于偶数前面面试题39:...

  • 打印螺旋矩阵

    题目要求 打印矩阵 打印矩阵 打印题目要求的矩阵(当N=6时)

  • 54. Spiral Matrix

    题目分析 螺旋打印矩阵。暴力实现~ 代码

  • 面试题33:把数组排成最小的数

    面试题33:把数组排成最小的数 题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数...

  • 数组

    打印数组 数组排序 数组乱序

网友评论

      本文标题:面试题之打印螺旋数组

      本文链接:https://www.haomeiwen.com/subject/xtfoyttx.html