• 稀疏数组


    package com.dai.sparsearray;
    
    public class SparseArray {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //创建原始的二维数组 11*11
            //0:表示没有旗子 1:黑 2:蓝色
            int chessArr1[][] = new int[11][11];
            chessArr1[1][2] = 1;
            chessArr1[2][3] = 2;
            chessArr1[4][5] = 1;
            System.out.println("原始的二维数组");
            for(int[] row : chessArr1) {
                for(int data : row) {
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
            
            //遍历二维数组,得到非0数据的个数
            int sum = 0;
            for(int i=0; i<11 ; i++) {
                for(int j=0;j<11;j++) {
                    if(chessArr1[i][j] != 0) {
                        sum++;
                    }
                }
            }
            //创建对应的稀疏数组
            int sparseArr[][] = new int[sum+1][3];
            //给稀疏数组赋值
            sparseArr[0][0] = 11;
            sparseArr[0][1] = 11;
            sparseArr[0][2] = sum;
            //遍历二维数组,将非0的值存放到稀疏数组中
            int count = 0; //用于记录是第几个非0数据
            for(int i = 0; i<11; i++) {
                for (int j=0;j<11;j++) {
                    if(chessArr1[i][j] !=0) {
                        count++;
                        sparseArr[count][0] = i;
                        sparseArr[count][1] = j;
                        sparseArr[count][2] = chessArr1[i][j];
                    }
                }
            }
            //输出稀疏数组
            System.out.println();
            System.out.println("输出稀疏数组");
            for(int i =0; i<sparseArr.length;i++) {
                System.out.printf("%d	%d	%d	
    ",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
            }
            //将稀疏数组恢复成原始的二维数组
            //先读取稀疏数组第一行,创建原始二维数组
            int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
            
            //遍历稀疏数组
            for(int i=1;i<sparseArr.length; i++) {
                chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
            }
            
            //输出恢复后的二维数组
            System.out.println("输出恢复后的二维数组");
            for(int[] row:chessArr2) {
                for (int data:row) {
                    System.out.printf("%d	", data);
                }
                System.out.println();
            }
                            
        }
    
    }
  • 相关阅读:
    使用一系列命令生成字母数字符号组合
    linux分析apache日志获取最多访问的前10个IP
    shell脚本输出九九乘法表
    shell脚本输出空心等腰三角形
    awk与sed命令面试题整理
    linux分析apache日志获取最多访问的前10个IP
    iOS开发-由浅至深学习block
    PM常用软件&工作平台
    iOS开发之—— 各种加密的使用(MD5,base64,DES,AES,RSA,DSA)
    MVVM With ReactiveCocoa
  • 原文地址:https://www.cnblogs.com/shengtudai/p/14308482.html
Copyright © 2020-2023  润新知