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

稀疏数组

时间:2024-09-22 20:13:00浏览次数:1  
标签:int 稀疏 System ++ a2 数组 println out

public class ArraysDemo02 {
public static void main(String[] args) {
int[][] a = new int[11][11];
a[1][2] = 1;
a[2][3] = 2;
for (int[] ints : a) {
for (int i : ints) {
System.out.print(i + " \t");
}
System.out.println();
}
System.out.println("============");
//转换为稀疏数组保存
//获取有效值的个数
int sum = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
if (a[i][j] != 0) {
sum++;
}
}
}
System.out.println("有效值的个数:" + sum);
//创建一个稀疏数组的数组
int[][] a2 = new int[sum + 1][3];
a2[0][0] = 11;
a2[0][1] = 11;
a2[0][2] = sum;

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

        }


    }
    //输出稀疏数组
    System.out.println("稀疏数组");
    for (int i = 0; i < a2.length; i++) {
        System.out.println(a2[i][0] + "\t" + a2[i][1] + "\t" + a2[i][2]);
        System.out.println();
    }
    System.out.println("==============");
    System.out.println("还原");
    //读取稀疏数组
    int[][] a3 = new int[a2[0][0]][a2[0][1]];
    //给其中的元素还原值
    for (int i = 1; i < a2.length; i++) {
        a3[a2[i][0]][a2[i][1]] = a2[i][2];
    }
    //打印

    System.out.println("还原的数组");

    for (int[] ints : a) {
        for (int i : ints) {
            System.out.print(i + " \t");
        }
        System.out.println();


    }

}

}

标签:int,稀疏,System,++,a2,数组,println,out
From: https://www.cnblogs.com/jyp345/p/18425787

相关文章

  • 树状数组浅谈
    什么是树状数组树状数组是一种码量小,常数小,支持单点修改和区间查询的数据结构。树状数组维护的信息和运算需要满足结合律并且可差分注意gcd和max操作虽然满足结合律,但不可差分,因此不能使用树状数组维护其实,树状数组能做的,线段树都能做,线段树能做的,树状数组不一定能做,但线段树......
  • C++速通LeetCode中等第10题-轮转数组(四种方法)
    方法一:巧用deque双向队列容器classSolution{public:voidrotate(vector<int>&nums,intk){deque<int>q;inttmp;if(nums.size()>1){for(autonum:nums)q.push_back(num);......
  • C++:数组与字符串
    一、数组         数组是一种存储若干元素的数据类型,在诸多编程语言中存在,其显著的特点是元素通常是在物理层面上连续存储的(逻辑上的数组,比如链表,可能不是),并且具有极快的元素访问速度。    数组通常是同构的(homogenous ),即数组中的元素都是同一类型的,......
  • Leetcode 2464. 有效分割中的最少子数组数目
    1.题目基本信息1.1.题目描述给定一个整数数组nums。如果要将整数数组nums拆分为子数组后是有效的,则必须满足:每个子数组的第一个和最后一个元素的最大公约数大于1,且nums的每个元素只属于一个子数组。返回nums的有效子数组拆分中的最少子数组数目。如果不能进......
  • 返回数组中的最大元素个数
    /***返回数组中的最大元素个数*约束:*数组大小1<=size<=10to5*数组元素大小1<=arrList[i]<=10to7*@paramcandles*@return*/publicstaticintbirthdayCakeCandles(List<Integer>candles){if(cand......
  • 【信号传输】DMA传输只能收到一半数据,发送123456 只能收到 123, 发送abcd只能收到ab,缓
    系列文章目录1.元件基础2.电路设计3.PCB设计4.元件焊接5.板子调试6.程序设计7.算法学习8.编写exe9.检测标准10.项目举例11.职业规划文章目录方案一、改DMA中断方案二、改数据类型方案三、改数据长度后记方案一、改DMA中断每个DMA通道都可以在DMA传......
  • 每日一题--交换数组
    题目【一维数组】交换数组作业内容将数组A中的内容和数组B中的内容进行交换。(数组一样大)答案#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ inta=0,b=0,c=0; intarr1[3]={1,2,3}; intarr2[3]={4,5,6}; intsz=sizeof(a......
  • python怎么初始化数组
    因为画图中x轴与y轴的数据通常为数组格式的数据,所以先总结一下如何初始化数组:(1)list得到数组# 通过array函数传递list对象L = [1, 2, 3, 4, 5, 6]a = np.array(L)# 若传递的是多层嵌套的list,将创建多维数组b = np.array([[1, 2, 3, 4], [5, 6, 7, ......
  • 【C++】数组案例:考试成绩统计
    要求:一个简单的二维数组使用案例,用于统计三个学生在三门课程中的考试成绩总分。代码要点:二维数组声明和初始化:intscore[3][3]:声明一个3行3列的二维数组,用于存储三个学生的三门课程成绩。初始化列表:为数组的每个元素赋初始值。总分统计:外层循环:遍历每个学生(行)。......
  • 【C++ 差分数组 前后缀分解】P7404家庭菜园
    本文涉及知识点C++差分数组C++前后缀分解P7404家庭菜园出自洛谷,我简述一下。已知数组a,长度为n(1<=n<=2e5),1<=a[i]<=1e9。一次操作如下:将a[i…j]全+1。问最少操作多少次,使得a成为山形数组,即存在k,a[0…k]严格递增,a[k…]严格递减。前后缀分解+差分数组(错误解法)n=a.......