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

面试题之打印螺旋数组

作者: 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();

    }

    }

    }

    }

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

    相关文章

      网友评论

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

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