顺时针打印矩阵;定义一个二维数组,输入一个数字num,在该数组中查找是否包含这个数字num,数组要求从上到下递增有序,从左向右递增有序)

1、顺时针打印矩阵

public class Exerse3{
public static void printMatrixIncircle(int[][] nArr,int rows,int columns,int nStart){
            // nEndX是最右一列列号
            int nEndX = columns - 1 - nStart;
            // nEndY是最下面一行行号
            int nEndY = rows - 1 - nStart;
            // 从左至右打印一行
            for (int i = nStart; i <= nEndX; i++) {        
                System.out.print(nArr[nStart][i] + " ");
            }
            // 从上到下打印一列
            if (nEndY > nStart) {
                for (int j = nStart + 1; j <= nEndY; j++){    
                    System.out.print(nArr[j][nEndX] + " ");
                }
            }
            // 从右至左打印一行            
            if (nEndX > nStart && nEndY > nStart) {
                for (int k = nEndX - 1; k >= nStart; k--) {
                    System.out.print(nArr[nEndY][k] + " ");
                }
            }
            // 从下到上打印一列            
            if (nEndY - 1 > nStart && nEndX > nStart) {
                for (int p = nEndY - 1; p >= nStart + 1; p--) {
                    System.out.print(nArr[p][nStart] + " ");
                }
            }
        }
        public static void print(int[][] nArr, int rows, int columns) {
            if (nArr == null || rows <= 0 || columns <= 0) {
                return;
            }
            int nStart = 0;
            while (rows > (nStart * 2) && columns > (nStart * 2)) {
                printMatrixIncircle(nArr, rows, columns, nStart);
                nStart++;
            }
        }
        public static void main(String[] args) {
            int[][] nMatrix1 = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 },
                    { 13, 14, 15, 16 } };
            print(nMatrix1, 4, 4);    
        }
    }

2、定义一个二维数组,输入一个数字num,在该数组中查找是否包含这个数字num,数组要求从上到下递增有序,从左向右递增有序)

法一:

public class Exerse3{
    public static boolean findNum(int[][] arr,int a){
        for(int i=0;i<arr.length;i++){
            for(int j=arr[i].length-1;j>=0;j--){
                if(a<arr[i][j]){
                    if(j==0){
                        break;
                    }
                    j--;
                    
                }
                if(a==arr[i][j]){
                    return true;
                }
                if(a>arr[i][j]){
                    i++;
                }
                if(a==arr[i][j]){
                    return true;
                }
            }
        }
        return false;
    }
    public static void main(String[] args){
    int[][] arr={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
    boolean bool=findNum(arr,5);
    System.out.println(bool);
}
}

法二:

public class Exerse3{
    public static boolean paiXu(int[][] arr,int num){
        int len=arr[0].length;
        if(num>arr[0][len-1]){
            for(int i=0;i<arr.length;i++){
                if(num<arr[i][len-1]){
                    for(int j=len-1;j>0;j--){
                        if(arr[i][j]==num){
                            return true;
                        }
                    }
                }
                else{
                    for(int j=len-1;j>=0;j--){
                        if(arr[i][j]==num){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
    public static void main(String[] args){
        int[][] arr={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
        boolean bool=paiXu(arr,12);
        System.out.print(bool);
    }
}

猜你喜欢

转载自blog.csdn.net/ZQ_313/article/details/82343800
今日推荐