zoukankan      html  css  js  c++  java
  • N19_顺时针打印指针

    题目描述
    * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
    * 例如,如果输入如下4 X 4矩阵:
    * 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
    * 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,

    此题: 在牛客上 不能直接打印 需要将每一个数字添加到链表中 再由主函数直接调用链表实现。

    package new_offer;
    
    import java.util.ArrayList;
    
    public class N19_1_PrintMatrix {
    
        public ArrayList<Integer> printMatrix(int [][]matrix){
        	ArrayList re=new ArrayList();
        	int cols,rows;
        	rows=matrix.length;
        	cols=matrix[0].length;
        	int start=0;
        	//圈数  
        	while(cols>start*2&&rows>start*2) {
        		//打印部分 分四步
        		{
        			int endx=cols-1-start;
        			int endy=rows-1-start;
        			//1 从左至右进行打印 至少有一行
        			for(int i=start;i<=endx;i++) {
        				int n=matrix[start][i];
        				re.add(n);
        				System.out.print(n);
        				System.out.print(" ");
        			}
        			//2 从上至下进行打印 至少有两列
        			if(start<endy) {
        				for(int i=start+1;i<=endy;i++) {
        					int n=matrix[i][endx];
        					re.add(n);
            				System.out.print(n);
            				System.out.print(" ");
        				}
        			}
        			//3 从右至左进行打印 至少有两行两列
        			if(start<endy&&start<endx) {
        				for(int i=endx-1;i>=start;i--) {
        					int n=matrix[endy][i];
        					re.add(n);
            				System.out.print(n);
            				System.out.print(" ");
        				}
        			}
        			//4 从下向上打印 至少有三行两列
        			if(start<endx&&(endy-start)>1) {
        				for(int i=endy-1;i>=start+1;i--) {
        					int n=matrix[i][start];
        					re.add(n);
            				System.out.print(n);
            				System.out.print(" ");
        				}
        			}
        		}
        		
        		System.out.println("   ");
        		start++;
        	}
    		return re;
        	
        }
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		N19_1_PrintMatrix n19=new N19_1_PrintMatrix();
    		int a[][]= {{1}};
    		int b[][]= {{1,2},{3,4}};
    		int c[][]= {{1,2,3}};
    		int d[][]= {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    		n19.printMatrix(a);
    		n19.printMatrix(b);
    		n19.printMatrix(c);
    		n19.printMatrix(d);
    	}
    
    }
    

      

  • 相关阅读:
    Cipherlab CPT9300手持扫描枪开发体验 [转]
    引用(ajaxfileupload.js) ajaxfileupload.js报jQuery.handleError is not a function错误解决方法
    C#锐利体验2.0:泛型编程
    Visual C#中调用Windows服务初探
    C#操作XML代码整理
    个人代码库のC#背景色渐变的功能
    ~~ C#数字时钟 ~~
    DevExpress随笔10.1.5的汉化与破解
    用C#获取局域网内所有机器
    C# 图片格式(JPG,BMP,PNG,GIF)等转换为ICO图标
  • 原文地址:https://www.cnblogs.com/kexiblog/p/11120547.html
Copyright © 2011-2022 走看看