美文网首页
面试题29:顺时针打印矩阵

面试题29:顺时针打印矩阵

作者: 灰化肥发黑会挥发 | 来源:发表于2018-12-28 17:00 被阅读0次

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字

  • 思路 应当分为上下左右四步,并且设置一个boolean矩阵,来判断是否能一直走。
    需要
public class printArray {
    public void printArrayOver(int[][] arr) {
        if(arr.length==0) return;
        int row = 0;
        int col = 0;
        boolean[][] visited = new boolean[arr.length+1][arr[0].length+1];
        for(int i=0;i<visited.length;i++){
            visited[i][0] = true;
            visited[i][visited.length-1]=true
        }
        for(int j=0;j<visited[0].length;j++){
            visited[0][j] = true;
            visited[visited.length-1][0]=true;
        }
        while(judge(arr,row,col)){
            if(judge(arr,startX,startY))
                right();
            if(judge(arr,startX,startY))
                down();
            if(judge(arr,startX,startY))
                left();
            if(judge(arr,startX,startY))
                up();
        }
    }
    public void left(){
        if(arr.length<=0) return;
        while(!visited[row+1][col+1]&&col<arr[0].length&&col>=0) {
            print(arr[row][col--]);
            visited[row+1][col+1] = true;
        }
    }
    public void right(){
        if(arr.length<=0) return;
        while(!visited[row+1][col+1]&&col<arr[0].length&&col>=0) {
            print(arr[row][col++]);
            visited[row+1][col+1] = true;
        }
    }
    public void down(){

        if(arr.length<=0) return;
        while(!visited[row+1][col+1]&&row<arr.length&&row>=0) {
            print(arr[row++][col]);
            visited[row+1][col+1] = true;
        }
    }
    public void up(){
        if(arr.length<=0) return;
        while(!visited[row+1][col+1]&&row<arr.length&&row>=0) {
            print(arr[row--][col]);
            visited[row+1][col+1] = true;
        }
    }
    public boolean judge(int[][] arr,int row,int col){
        boolean result = true;
        return visited[row-1][col]&&visited[row][col-1]&&visited[row+1][col]&&visited[row][col+1];
    }
}

相关文章

  • 剑指offer第二版-29.顺时针打印矩阵

    本系列导航:剑指offer(第二版)java实现导航帖 面试题29:顺时针打印矩阵 题目要求:输入一个矩阵,按照从...

  • 剑指 Offer 29. 顺时针打印矩阵

    剑指 Offer 29. 顺时针打印矩阵[https://leetcode-cn.com/problems/shu...

  • 剑指 Offer 29. 顺时针打印矩阵

    剑指 Offer 29. 顺时针打印矩阵[https://leetcode-cn.com/problems/shu...

  • 面试题29:顺时针打印矩阵

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 思路:定义上下左右四个变量,初始边界值,定义外层循环...

  • 面试题29:顺时针打印矩阵

    题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。如下所示矩阵: 则依次打印输出数字:1,2,3,...

  • 面试题29:顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字。思路:先分析每一圈的起点,我们发现左上角的x和y...

  • 面试题29:顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2...

  • 面试题29:顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 思路 应当分为上下左右四步,并且设置一个boo...

  • 面试题29:顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3...

  • 29、顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3...

网友评论

      本文标题:面试题29:顺时针打印矩阵

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