Java稀疏数组

news2024/11/6 3:01:41

稀疏的概述

       当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。

       稀疏数组的处理方式是:

                记录数组一共有几行几列,有多少个不同值

                把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

       如下图: 左边是原始数组,右边是稀疏数组

 初始化左边的数组

// 创建一个二维数组 6 * 7  0代表没有赋值
int[][] array1 = new int[6][7];
array1[0][3] = 22;
array1[0][6] = 15;
array1[1][1] = 11;
array1[1][5] = 17;
array1[2][3] = -6;
array1[3][5] = 39;
array1[4][0] = 91;
array1[5][2] = 28;

// 这是增强for循环   将array1里面的值直接赋值给ints

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

从二维数组变成稀疏数组

// 声明一个变量  用来记录上面二维数组中一共有多少个值

int sum = 0;
for (int i = 0; i < 6; i++){
    for (int j = 0; j < 7; j++){
        if (array1[i][j] != 0){
            sum++;
      }
   }
}

// 初始化右边的稀疏数组
int[][] array2 = new int[sum + 1][3];

array2[0][0] = 6;
array2[0][1] = 7;
array2[0][2] = sum;

System.out.print("行" + "\t" + "列" + "\t" + "值");
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];
       }
   }
}

for (int i = 0; i < array2.length; i++) {
    System.out.println(array2[i][0] + "\t" + array2[i][1] + "\t" + array2[i][2])
}

从稀疏数组变成二维数组

// 初始化二维数组

int[][] array3 = new int[array2[0][0]][array2[0][1]];

// 由于第一行的值是用来记录整个数组长宽及有几个不同数的  所以i初始值为1
for (int i = 1; i < array2.length; i++) {
    array3[array2[i][0]][array2[i][1]] = array2[i][2];
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/836761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker 部署mysql 5.6集群

docker搭建mysql的集群&#xff08;一主双从&#xff09; 1.拉取镜像 docker pull mysql:5.6 2.启动master容器 docker run -it -d --name mysql_master -p 3306:3306 --ip 192.168.162.100 \ -v /data/mysql_master/mysql:/var/lib/mysql \ -v /data/mysql_master/conf.d…

利用XSS在线平台获取用户cookie

//XSS弹窗&#xff1a; <script>alert("xss")</script> XSS漏洞&#xff1a; //XSS弹窗&#xff1a; <script>alert("xss")</script> //XSS在线平台&#xff1a; <ScRipT sRc//7ix7kigpovxdbtd32fuspgffmtmufo3wwzgnzaltddewtb…

小白到运维工程师自学之路 第六十六集 (docker 网络模型)

一、概述 Docker网络模型是指Docker容器在网络中的通信方式和组织结构。Docker容器通过网络连接&#xff0c;使得容器之间可以相互通信&#xff0c;并与主机和外部网络进行交互。 在Docker中&#xff0c;有几种不同的网络模型可供选择&#xff1a; 1、主机模式&#xff08;H…

实习该选择c++后台开发还是音视频开发?

后台开发:更多是理解需求、分析问题、解决bug等能力、对于逻辑培养有很大的帮助。可以进行软件开发、网络开发、游戏开发、以及之后可能的物联网相关开发。但是容易陷入需求当中&#xff0c;熟练后就会容易乏味 音视频开发: 门槛比较高&#xff0c;需要大量积累&#xff0c;补…

给你一个网站如何测试?

主要围绕&#xff0c;功能&#xff0c;页面 UI &#xff0c;兼容&#xff0c;性能&#xff0c;安全&#xff0c;这几个方面去聊&#xff0c;首先是制定测试计划&#xff0c;确定测试范围和测试策略&#xff0c;一般包括以下几个部分&#xff1a;功能性测试&#xff1b;界面测试…

vue列表全选反选

1、结果查看 2、 选中时添加样式 3、点击选择调用方法 4、全选反选调用方法

多图在线合成gif怎么弄?图片合成gif在线操作更简单

将多张图片合成起来就可以做成gif动图&#xff0c;相信很多小伙伴都知道这种方法&#xff0c;那么什么样的操作方法能够更加简单快捷的完成gif合成处理呢&#xff1f;想要将多图合成gif&#xff0c;那么利用浏览器来使用在线gif制作&#xff08;https://www.gif.cn/&#xff09…

OLAP与OLTP的异同、定义及优劣

OLAP与OLTP的异同、定义及优劣 OLAP&#xff1a;联机事务处理定义应用场景优缺点 OLTP&#xff1a;联机分析处理定义应用场景优缺点 OLTP与OLAP异同点相同点不同点例子 OLAP&#xff1a;联机事务处理 定义 OLAP&#xff08;Online Analytical Processing&#xff0c;联机分析…

灵魂在高纬度的19个特征

01 喜欢奉献和付出‍ 在高维度的星球里&#xff0c;无私的爱是主旋律&#xff0c;所以是每个灵魂自动的反应。 02 喜欢光明&#xff0c;不喜欢黑暗 喜欢展现自己的阳光的一面&#xff0c;不喜欢自己黑暗的一面、尽量克制自己的不好的思维和行为&#xff0c;所以容易成为一个完…

中小企业实施MES管理系统,这几点需要注意

制造业是中国经济命脉所系&#xff0c;是立国之本、强国之基。作为世界制造大国&#xff0c;制造业一直是热门话题。当下&#xff0c;中小制造企业的产业地位不断提升&#xff0c;想要规范生产制造、提升产品竞争力&#xff0c;进行实施MES管理系统解决方案的企业越来越多。那么…

window安装TensorFlow遇到的问题

环境 windows 10 64位Anaconda 通常来说&#xff0c;官方文档作为一个建议&#xff0c;因为和国内场景会有些比较大的区别&#xff0c;当然参考文档 https://www.tensorflow.org/install/pip?hlzh-cn Anaconda升级 python建议升级到python3.0&#xff0c;这里通过Anaconda…

如何做好数仓BI项目的规划与建设?

BI项目规划和实施方案是保障BI项目顺利落地的首要环节。好的项目规划能有效提升开发人效&#xff0c;缩短项目周期&#xff0c;实现项目预期目标。 构建运营数据的可视化是为企业运营管控提供有效的支撑&#xff0c;成为企业在大数据时代智慧运营的必然路径。 在实际BI项目的…

你看你也哭!与张津剑对谈AI创业与投资;AI二维码/艺术字/Logo视频全教程;互联网AI大模型TOP 10图鉴;开发人员成长指南 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 真格基金X亚马逊云科技开启「AI 超新星计划」&#xff0c;发放海量云资源 真格基金联合亚马逊云科技&#xff0c;推出了「AI超新星计划…

Leetcode-每日一题【剑指 Offer 05. 替换空格】

题目 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。 示例 1&#xff1a; 输入&#xff1a;s "We are happy."输出&#xff1a;"We%20are%20happy." 限制&#xff1a; 0 < s 的长度 < 10000 解题思路 前置知识 Str…

C++ 指针作为函数参数

C语法中&#xff0c;函数的参数不仅可以是基本类型的变量、对象名、数组名或引用&#xff0c;而且可以是指针。 **如果指针作为形参&#xff0c;在调用时实参将值传递给形参&#xff0c;也就是使实参和形参指针变量指向同一内存地址。**这样在子函数运行过程中&#xff0c;通过…

Linux中使用verdaccio 搭建私有npm 服务器

安装verdaccio npm i -g verdaccio安装完成 输入verdaccio,出现下面信息代表安装成功&#xff0c;同时输入verdaccio后verdaccio已经处于运行状态&#xff0c;当然这种启动时暂时的&#xff0c;我们需要通过pm2让verdaccio服务常驻 ygiZ2zec61wsgbo9t9i346jbZ:~$ verdacciowar…

机器学习笔记 - 使用 Tensorflow 从头开始​​构建您自己的对象检测器

一、简述 之前的文章是利用了VGG16的预训练模型,然后构造完全连接的层标头以输出预测的边界框坐标,但是不包含对象标签的分类。 机器学习笔记 - 使用Keras、TensorFlow框架进行自定义数据集目标检测训练_keras 制作 目标检测 数据集_坐望云起的博客-CSDN博客学习如何训练自定…

AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code

全球半导体解决方案供应商瑞萨电子宣布其客户现可以使用Microsoft Visual Studio Code&#xff08;VS Code&#xff09;开发瑞萨全系列微控制器&#xff08;MCU&#xff09;和微处理器&#xff08;MPU&#xff09;。瑞萨已为其所有嵌入式处理器开发了工具扩展&#xff0c;并将其…

前端Bootstrap中modal常用用法

1.打开官网 Modal Bootstrap v5.1 | Bootstrap官方文档中国镜像 2.选择组件 说明&#xff1a;Components下的modal 3.选择喜欢的样式 说明&#xff1a;本次选择的是Live demo&#xff0c;为了展示更多的可操作性&#xff0c;本次将不用上面的Button trigger modal&#xf…

K8S 部署 RocketMQ

文章目录 添加模板部署本地访问 集群使用 kubesphere 作为工具 添加模板 添加 helm 模板 helm repo add rocketmq-repo https://helm-charts.itboon.top/rocketmq helm repo update rocketmq-repo编写 value.yaml 文件 配置主从节点的个数&#xff0c;例子为单节点 broker:…