首页 > 其他分享 >稀疏数组

稀疏数组

时间:2022-10-01 15:22:05浏览次数:35  
标签:int System 稀疏 ++ 数组 out arrays1 arrays2

稀疏数组

package array;
import java.util.Arrays;
public class Sparse {
    public static void main(String[] args) {
        //创建二维数组
        System.out.println("遍历原数组:");
        int[][] arrays1 = new int[11][11];
        arrays1[1][2] = 1;
        arrays1[2][3] = 2;
        for (int[] ints : arrays1) {
            for (int anInt : ints) {
                System.out.print(anInt+"  ");
            }
            System.out.println();
        }


        //转化为稀疏数组

        //计算有效值个数
        int sum = 0;
        for (int i = 0; i < arrays1.length; i++) {
            for (int j = 0; j < arrays1[i].length; j++) {
                if(arrays1[i][j] != 0){
                    ++sum;
                }
            }
        }
        System.out.println("有效值个数为:"+sum);
        //创建稀疏数组
        int[][] arrays2 = new int[sum+1][3];//sum+1是为了增加头部显示行、列、值的个数综合;3是为了表示有效值和对应的坐标
        arrays2[0][0] = arrays1.length;
        arrays2[0][1] = arrays1[1].length;
        arrays2[0][2] = sum;
        int temp = 1;//用于计算储存的数据下标
        for (int i = 0; i < arrays1.length; i++) {
            for (int j = 0; j < arrays1[i].length; j++) {
                if(arrays1[i][j] != 0){
                    arrays2[temp][2] = arrays1[i][j];
                    arrays2[temp][1] = j;
                    arrays2[temp][0] = i;
                    ++temp;
                }
            }
        }
        System.out.println("遍历稀疏数组:");
        //遍历稀疏数组
        for (int i = 0; i < arrays2.length; i++) {
            for (int j = 0; j < arrays2[i].length; j++) {
                System.out.print(arrays2[i][j]+"    ");
            }
            System.out.println();
        }


        //将稀疏数组还原为原数组
        int[][] arrays3 = new int[arrays2[0][0]][arrays2[0][1]];
        for (int i = 1; i < arrays2.length; i++) {
            arrays3[arrays2[i][0]][arrays2[i][1]] = arrays2[i][2];
        }
        System.out.println("遍历解析后的数组:");
        for (int[] ints : arrays3) {
            for (int anInt : ints) {
                System.out.print(anInt+"  ");
            }
            System.out.println();
        }


    }
}

标签:int,System,稀疏,++,数组,out,arrays1,arrays2
From: https://www.cnblogs.com/qt0312/p/16747246.html

相关文章

  • Java 数组
    1.数组的定义数组是相同类型数据的有序集合。数字描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作数组元素,每一个数组元素可以通过......
  • 树状数组+dfs
    P3605[USACO17JAN]PromotionCountingP-洛谷|计算机科学教育新生态(luogu.com.cn)这是一棵树,首先想到了dfs,但是数据范围大,所以不能单纯用dfs想到每个结点只跟他的......
  • java数组
    java数组数组概述  数组声明创建      for语句快速语句:数组.length.for   数组使用内存分析    数组打印快捷键数组名.for......
  • 【Numpy总结】第三节:Numpy创建数组
    一、标准数组的创建1.1numpy.empty创建空数组用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组;由于未初始化,所以数组中的数据是随机的;numpy.empty(shape,dt......
  • 数组和内存分析
    数组什么是数组数组是相同数据类型数据的集合,且数组中的数据具有先后次序每一个数据称为一个数组元素,每一个元素可以通过下标访问声明和定义声明:不需要分配内存......
  • 如何使用Java代码修改数组大小呢?
    转自:http://www.java265.com/JavaJingYan/202111/16357342581649.html数组是Java开发中非常重要的一个数据存储容器,那可以存储多种类型,基础类型,引用类型,但是它有一个缺......
  • Jmeter 使用json提取器循环提取数组值
    一、使用json提取器提取数组值:   提取数组: -1代表取所有的数组值,默认值not_found;二、添加循环控制器,循环次数为数组长度:${变量名_matchNr}示例:${TaskID2_matchN......
  • 稀疏数组
    稀疏数组当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组-共有几行几列,有多少个不同值把具有不同值......
  • List转为String数组 List对象.toArray(new String[0])
    List转为String数组List对象.toArray(newString[0])privateString[]getStringArray(){returnnewString[]{"one","two","three"};}@Testpublicvoidtes......
  • 【code基础】判断数组中每个元素前递增序列子序列的最大长度
    这是力扣刷题中很经典的一个套路,类似有:以下标i为标准,其之前最长的非递增序列的个数以下标i为标准,其之后的最长非递减序列的个数//以下标i为标准,其之前最长的非递增......