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

稀疏数组

时间:2024-02-19 14:13:16浏览次数:23  
标签:存储 元素 稀疏 数组 默认值 存储空间

稀疏数组的一些常见问题

1. 什么是稀疏数组?

1.1 what?

  • 稀疏数组是一种针对大部分元素值为相同或者默认值的数组进行优化存储的方法。在稀疏数组中,只存储那些不同于默认值的元素及其对应的位置信息,从而节省存储空间。

1.2 why?

  • 稀疏数组通常用于处理大规模数组中大部分元素值相同的情况,比如二维数组中的地图数据、棋盘数据等。这种情况下,使用稀疏数组能够显著减少存储空间的开销,提高存储效率。

2.稀疏数组与二维数组之间如何转化?

2.1 how?

下面po一张思路图,以此解答。

2.2 具体的code(以java为例)

备注:该文件中。第115行 以及 第139行 代码为拓展,可自行进行阅读做以提示!

标签:存储,元素,稀疏,数组,默认值,存储空间
From: https://www.cnblogs.com/nikiL/p/18020947

相关文章

  • 树状数组及线段树详解
    本文章是作者调了3个多小时后,感触颇深,历经1个多小时写出来的,不喜勿喷相关内容可参考模板总结中的树状数组及线段树;进入正题树状数组所谓树状数组,即像树的数组,一般应用于求多次前缀和以及区间前缀和的问题中;其根据节点编号的二进制数的末尾0的个数划分层次,每个节点的管辖......
  • 基于稀疏表示的小波变换多光谱图像融合算法matlab仿真
    1.算法运行效果图预览小波变换融合   PCA融合   基于稀疏表示的小波变换多光谱图像融合算法   性能指标对比   2.算法运行软件版本matlab2022a 3.算法理论概述       随着遥感技术的飞速发展,多光谱图像融合在地球观测、环境监测、......
  • HH项链(树状数组)
    HH项链题目描述HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难......
  • 数组 容器 递归 普通排序 线性排序
    《数据结构与算法之美》读书笔记写在前面这本书的大部分内容比较浅显,因此只挑DSAA课程上没有涉及或没有深入讨论的点总结第二章数组相关提高传统数组插入/删除数据效率的方法:如果插入的数据不要求有序,可以直接把某位的原数据替换成新数据,然后把原数据放到数组末尾,避免大......
  • 树状数组
    树状数组是一种支持\(O(\logn)\)时间内进行单点修改和区间查询的,代码量小的数据结构。原理及实现下为洛谷P3374【模板】树状数组1题意简述:已知一个长度为\(n\)的数列\(a\),你需要进行下面两种操作:将某一个数加上\(x\);求出某区间每一个数的和。保证\(......
  • 情书密码 (树状数组)
    题目问题描述有消息称:绝恋找到了自己的MissRight,正准备自己的表白。绝恋已经写好了情书,但为了避免其它人截获,他对情书进行加密。为了打探绝恋的私密,你冒着生命危险终于搞到了这封情书。原以为可以轻易将情书解密,结果竟然发现聪明的绝恋并没有直接写出加密用的密码,而是在那粉红......
  • 学习笔记#4:树状数组和 LIS
    学习笔记#4:树状数组和LIS前言:树状数组是和线段树类似的数据结构,更确切的说,树状数组能解决的问题,线段树都能解决,而线段树还能解决一些树状数组所不能解决的问题。因此线段树的应用范围比树状数组更广泛。但是,树状数组的常数更小,在同样的\(\text{O}(n\logn)\)复杂度下,树状数......
  • 用好内存从数组开始
    数组就是将相同数据的多个数据连续排列在内存中的一个元素序列。数组是使用内存的基础,数组之所以是使用内存的基础,是因为它反映的就是内存的物理结构本身,使用数组可以提高编程效率,在循环中使用数组可以用很短的代码按顺序读取或写入数组元素。栈和队列都是无需指定地址和下标就可......
  • 树状数组
    HH的项链看到这题,我首先想到了用flag[]数组标记,很明显这是必需的。但随着代码进行,又会遇到一个问题:如1212,如果按照正常标记后面两个就不会被标记,那遍历3到4时,结果为0。顺着思路想,如果我们在用完一次后把它丢掉,重新遍历,这也就导致我们必须要采用一种有序遍历,从而让后面的更......
  • 请编写函数fun,它的功能是:求出1到100之内能被7或者11整除, 但不能同时被7和11整除的所有
    /2.请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数/#include<stdio.h>#include<string.h>intfun(int*buf){inti=1,j=0;for(i=1;i<100;i++){if(i%7==......