首页 > 其他分享 >稀疏数组 待完善

稀疏数组 待完善

时间:2023-12-05 23:25:48浏览次数:26  
标签:完善 int array2 稀疏 System 数组 println out

package array;

import java.util.Arrays;

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;
        //输出原始的数组
        //foreach循环:第一个for是打印每个数组(一维数组) 第二个for是打每个数组的元素(二维)
        //第一个for形式:二维数组名称.for回车即可eg.array1.for
        //第二个for形式: 二维数组的名称赋给一个名称.for eg.ints.for
        //可以理解为一维数组控制行数二维数组控制列数
        //和增强for循环的梦幻联动
        System.out.println("输出原始的数组");
        for (int[] ints : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");//注意是print 不是println
            }
          System.out.println();//空格!!!为了让一个数组在一行和15行配合着用

        }
        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.创建一个稀疏数组的数组
        /**
         *     行  列  有效值
         *     11  11   2
         *     1   2    1
         *     2   3    2
         */
        int[][] array2 = new int[sum+1][3];
        array2[0][0]=11;
        array2[0][1]=11;
        array2[0][2]=sum;
        //遍历二维数组,将非零的值,存放在稀疏数组中
        int count = 0;//表示稀疏数组的行数 也可以把所有count去掉
        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];
                }

            }

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

        }
        System.out.println("================================================");
        System.out.println("还原");
        /**
         *
          */
        // 1.读取稀疏数组的值
        int[][] array3 = new int[array2[0][0]][array2[0][2]];
        //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 : array1) {
            for (int anInt : ints) {
                System.out.print(anInt+"\t");//注意是print 不是println
            }
            System.out.println();//空格!!!为了让一个数组在一行和15行配合着用

        }

    }
}

 

标签:完善,int,array2,稀疏,System,数组,println,out
From: https://www.cnblogs.com/123456HHH/p/17878560.html

相关文章

  • 秦疆的Java课程笔记:58 数组 冒泡排序
    总共有八大排序,其中冒泡排序无疑是较为出名的排序算法之一。冒泡排序的代码相当简单,两层循环,外层冒泡轮数,里层依次比较。当看到嵌套循环,应该立马意识到,这个算法的时间复杂度是\(O(n^2)\)。冒泡排序基本步骤:比较数组中两个相邻元素,如果第一个数比第二个数大,就交换位置......
  • 秦疆的Java课程笔记:59 数组 稀疏数组
    当一个数组中大部分元素都是0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模publicclassArrayDemo1{publicstaticv......
  • 刷题复习(二)数组-双指针
    刷题复习(二)数组-双指针https://labuladong.gitee.io/algo/di-ling-zh-bfe1b/shuang-zhi-fa4bd/1、删除有序数组中的重复项慢指针用于统计不重复项,快指针用于不停前进对比是否有新的不重复项,有的话进行替换classSolution{publicintremoveDuplicates(int[]nums){......
  • 秦疆的Java课程笔记:56 数组 二维数组
    多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。秦疆老师表示Java中并不太使用二维以上的多维数组。例如二维数组:inta[][]=newint[2][5],就可以看成是一个两行五列的数组publicclassArrayDemo1{publicstaticv......
  • 稀疏矩阵压缩
    c代码#include<stdio.h>#defineMaxSize128#defineM6#defineN7#defineERROR0#defineOK1typedefintStatus;typedefstruct{inti;//行号intj;//列号intv;//元素值}TupNode;......
  • Day10 数组
    1.数组声明//方法一:首选dataType[]arrayName;//方法二:非首选,像c++dataTypearrayName[];2.数组创建2.1动态初始化//不初始化,大小自行决定dataType[]array=newdataType[arraySize];如果动态初始化会赋予该类型元素的默认值:0,0.0,false可以指定数组长度,其中数组......
  • 除自身以外数组的乘积
    题解模板难度:简单|中等√|困难-------------------用时:28分钟(第一次)-------------------作题日期:2023-12-04ps:本人理解有限,以下是自我理解,官方和大佬有更完整和详细的解析!!!题目描述题目描述给你一个整数数组nums,返回数组answer,其中answer[i]......
  • 代码随想录算法训练营第五天| 242.有效的字母异位词 349. 两个数组的交集 1. 两数之
    LeetCode242.有效的字母异位词题目链接: LeetCode242思路: 使用C++自带的库函数,经过排序后进行比较(使用库函数) classSolution{public:boolisAnagram(strings,stringt){if(s.length()!=t.length())returnfalse;sort(s.begin(),......
  • 秦疆的Java课程笔记:51-52 数组 什么是数组&数组的声明和创建
    51什么是数组数组是入门阶段的最后部分。数组的定义:数组是相同类型数据的有序集合。数组描述的是相同类型的若干数据,按照一定的先后次序排序组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。52数组的声明和创建首先必须声明数......
  • LeetCode643. 子数组最大平均数I
    题目描述思路:滑动窗口模板定义需要维护的变量//1.定义需要维护的变量doublesum=0;doublemax_avg=Integer.MIN_VALUE;窗口固定大小为k,所以用ifif(end-start+1==k){ sum-=nums[start]; start+=1;}方法一:classSolution{publicdouble......