稀疏数组简单代码实现

package alo;
//spares
public class 稀疏数组_ArrayQueue {
    public static void main(String[] args) {

        int[][] array = new int[10][10];
        int index = 0;                  //搞到里面有几个值
        array[0][3] = 10;
        array[6][5] = 20;
        array[7][7] = 30;
        array[8][7] = 40;
        array[5][6] = 50;
        for (int a = 0; a < array.length; a++) {
            for (int b = 0; b < array[a].length; b++) {
                if (array[a][b] != 0) {
                    index++;
                }
            }
        }
        int[][] B = new int[index + 1][3];     //一行一个值,加第一行
        B[0][0] = array.length;
        B[0][1] = array[1].length;
        B[0][2] = index;       //稀疏数组第一行,多少行多少列多少值
        index = 1;             //循环索引,可随时操作
        for (int a = 0; a < array.length; a++) {  //第几列第几行有什么值
            for (int b = 0; b < array[a].length; b++) {
                if (array[a][b] != 0) {
                    B[index][0] = a;                //A和B是两个数组,索引不一样,一个是遍历的索引作为值,一个是用多少值做的新数组,我傻了哎
                    B[index][1] = b;
                    B[index++][2] = array[a][b];
                }
            }
        }

//        for (int out[] : B) {
//            for (int data : out) {
//                if (data >= 10) {
//                    System.out.print(data + " ");
//                } else {
//                    System.out.print(data + "  ");
//                }
//            }
//            System.out.println();
//        }

        int[][] newArr=new int[B[0][0]][B[0][1]];       //稀疏数组还原
        for(int ind=0;ind<B.length-1;ind++){
            newArr[B[ind+1][0]][B[ind+1][1]]=B[ind+1][2];
        }

//        for(int[] out:newArr){
//            for(int data:out){
//                if(data>=10){
//                System.out.print(data+" ");
//                }
//                else{
//                    System.out.print(data+"  ");
//                }
//            }
//            System.out.println();
//        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值