首页 > 其他分享 >练习——稀疏数组的简单应用

练习——稀疏数组的简单应用

时间:2023-03-28 18:01:12浏览次数:35  
标签:int array2 练习 稀疏 System 数组 println out

package com.q1u.array;

public class ArrayDemo08 {
    public static void main(String[] args) {
        //1.创建一个二维数组    11*11   0:没有棋子  1:黑棋    2:白棋

        int[][] array1 = new int[11][11];
        array1[1][2] = 1;
        array1[2][3] = 2;
        //输出原始数组
        System.out.println("输出原始数组:");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }

        System.out.println("===============================");

        //转换为稀疏数组保存
        //1.获取有效值个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (array1[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值个数:"+sum);

        //2.创建一个稀疏数组
        int[][] array2 = new int[sum+1][3];

        array2[0][0] = 11;
        array2[0][1] = 11;
        array2[0][2] = sum;

        //3.遍历二维数组,将非零的值存放到稀疏数组中
        int count = 0;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1[i].length; j++) {
                if (array1[i][j]!=0){
                    count++;
                    array2[count][0] = i;
                    array2[count][1] = j;
                    array2[count][2] = array1[i][j];
                }
            }
        }

        //4.输出稀疏数组
        System.out.println("输出稀疏数组:");
        for (int i = 0; i < array2.length; i++) {
            System.out.print(array2[i][0]+"\t");
            System.out.print(array2[i][1]+"\t");
            System.out.println(array2[i][2]);
        }

        System.out.println("==================================");
        System.out.println("还原");
        //1.读取稀疏数组
        int[][] array3 = new int[array2[0][0]][array2[0][1]];

        //2.给其中元素还原他的值
        for (int i = 1; i < array2.length; i++) {
            array3[array2[i][0]][array2[i][1]] = array2[i][2];
        }

        //3.打印
        System.out.println("输出还原的数组:");
        for (int[] ints : array3) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");
            }
            System.out.println();
        }
    }
}

标签:int,array2,练习,稀疏,System,数组,println,out
From: https://www.cnblogs.com/Q1u-ovo/p/17266174.html

相关文章

  • python 多为数组理解
     np.random.randn(3,3,4)三行三列,每个单元格里有四个元素   ......
  • 二维数组根据相同的两个值计算某一个值的总和
    将二维数组中相同time和id值的num累计<?php$res=[0=>['time'=>'2021-06-02','id'=>'122','num'=>1],......
  • java方法-数组(定义,声明创建)
    数组概述数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素,每个数组元......
  • 【入门】Go语言数组详解
    目录一、Go语言数组简介1.1什么是数组?1.2数组声明语法二、数组的基本操作2.1数组的定义及赋值2.2数组的初始化2.2.1指定长度初始化2.2.2不指定长度初始化2.2.3根据......
  • Python中21道个程序小练习
    1.使用格式化输出的三种方式实现以下输出(name换成自己的名字,既得修改身高体重,不要厚颜无耻)name='ABDMLBM'height=175weight=140#"Mynameis'Nick',myheigh......
  • 用 Go 剑指 Offer 04. 二维数组中的查找
    在一个n*m的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数......
  • 第三篇 TypeScript 【 typeScript 函数 + typeScript 数组 + typeScript 对象】
    typeScript函数TypeScript函数与JavaScript函数的区别TypeScript函数JavaScript函数含有类型无类型箭头函数箭头函数(ES2015)函数类型无函数类型......
  • 剑指offer11(Java)-旋转数组中的最小值(简单)
    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行......
  • 二维数组详解
    6928:yym下象棋描述 yym是一个喜欢玩象棋的人,现在yym的棋盘上有一匹马,如果你们不知道马的走法,请看下图:(棋盘大小为9*9)现在,yym想要一步吃掉它周围的其他棋子(不考虑......
  • Java学习----稀疏数组
    稀疏数组当数组中大部分元素为0,或为同一值时,可用稀疏数组来保存。处理方式:记录数组一共有几行几列,有多少不同值。把具有不同值的元素和行列和值记录在小规模数组中......