Day18稀疏数组

news/2025/9/20 12:36:24/文章来源:https://www.cnblogs.com/bingzhuo/p/19102298

二维数组中的大部分默认值都为零,导致记录了许多没有意义的数据,稀疏数组用坐标对应有效值的方式大大简化了原本繁杂的数组
image

package com.cc.array;import java.util.Arrays;public class ArrayDemo8 {public static void main(String[] args) {//创建一个二维数组:11*11        规定:0代表无棋子   1:黑棋    2:白棋int [][] array1 = new int [11][11];array1[5][4] = 9;array1[6][8] = 7;array1[7][9] = 8;//输出原始数组System.out.println("输出原始数组");System.out.println(Arrays.deepToString(array1));//Array.deepToString(array1)会将整个数组以紧凑的格式输出,因此所有数组元素会在同一行显示//若是要每行输出一个一维数组,使其展示为表格的形式,可以想通过循环遍历每一个一维数组,然后借助Arrays.toString()方法输出for(int i = 0;i<array1.length;i++){System.out.println(Arrays.toString(array1[i]));}for(int [] row : array1){for(int row2 : row){System.out.print(row2+"\t");}System.out.println();}//转换为稀疏数组保存//获取有效值的个数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);//创建一个稀疏数组的数组int [][] array2 = new int [sum+1][3];array2[0][0] = 11;array2[0][1] = 11;array2[0][2] = sum;//遍历二维数组,将非零的数存入稀疏数组中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];}}}//输出稀疏数组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("还原");//读取该数组int [][]array3 = new int[array2[0][0]][array2[0][1]];//给其中的元素还原它得的值for(int i = 1;i<array2.length;i++){array3[array2[i][0]][array2[i][1]] = array2[i][2];//坐标对应的有效值}///打印System.out.println("输出还原的数组");for(int [] array4 : array3){for(int  aray5: array4){System.out.print(aray5+"\t");}System.out.println(" ");}}}

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

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

相关文章

底层

面向过程转变成面向对象的底层逻辑 本套课程有一定难度,讲得不好,请多多包涵!里面有很多我的个人见解(仅供参考!如有指导,请把邮件发送到该邮箱690141760@qq.com) 如果有人问面向对象四大特征是什么?我相信基本…

YOLO实战应用 3训练与优化策略

实战应用 3训练与优化策略 核心概念数据加载与缓存:通过缓存机制提升训练效率,避免重复读取和处理标签。 Mosaic 数据增强:随机拼接四张图像,提升数据多样性与模型鲁棒性。 Batch 构建:一次迭代处理多个样本,并…

WPF 视图缩略图控件(支持缩放调节与拖拽定位)

实现 WPF 应用中画布的缩放控制与缩略图导航,支持滑块调节缩放比例、缩略图拖拽定位,实时同步主画布视图与缩略图视口位置。缩放控制:通过 Slider 值变化计算缩放比例,同步更新主画布 ScaleTransform,并调整 Scro…

实用指南:Dify关联Ollama

实用指南:Dify关联Ollama2025-09-20 12:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

ik中文分词器使用

IK分词器介绍 在ElasticSearch中默认使用的分词器为Standard分词器,该分词器对中文不友好,对中文的处理方式是按单个汉字分词,无法识别中文里的词语、短语等语义单元。例如对于 "汉朝" 这个词,默认分词器…

动态水印也能去除?ProPainter一键视频抠图整合包下载

ProPainter是一个基于E2FGVI实现的AI视频编辑工具,它结合了增强的传播和Transformer机制,能够快速高效地进行视频修复和水印去除功能特点对象移除:智能地检测和移除视频中的动态物体,对于去除不需要的元素或错误…

SpringBoot整合RustFS:全方位优化文件上传性能

SpringBoot整合RustFS:全方位优化文件上传性能作为一名多年深耕分布式存储的架构师,我在多个企业级项目中成功实施SpringBoot与RustFS的集成。本文将分享一套​经过实战检验的性能优化方案,帮助你的文件上传速度提升…

javaScript(WebAPI) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

windows使用es-client插件

下载插件并集成到浏览器 在各大浏览器应用商店搜索es-client,这里以edge浏览器作为演示,bing搜索“微软商店 插件 es-clint”,搜索结果第一条记录点击进去.点击右边的“获取”按钮,将插件添加到浏览器中。这里由于…

AI学习日记 - 实践

AI学习日记 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Co…

es中的端点

_doc端点 用于对单个****文档的crud操作(如创建、获取、更新、删除单个文档),常见用法如下向指定索引添加新文档: POST /索引名/_docES会自动生成唯一文档ID,例:POST /books/_doc → 向 books索引添加新文档。 根…

解码C语言宏

预处理概述 基本概念 预处理是C语言编译过程的第一步,所有以#开头的指令都由预处理器处理,这些指令不属于C语言语法本身。 预处理指令类型头文件包含:#include 宏定义:#define 宏取消:#undef 条件编译:#if, #ifd…

es中的索引

索引的概念 在ES中,索引(Index) 是核心的数据存储和检索单元,其本质是一组结构相似的文档(Document)的集合,同时包含了文档的元数据(如字段类型、分词器配置)和检索所需的 “倒排索引” 结构。ES软件的索引类…

es中的数据类型

字符串 文本(Text)作用:适用于全文搜索的文本字段,例如文章内容、电子邮件正文、产品描述等长文本。 特点:ES会对文本内容进行分词处理,将字符串转换为单个术语的列表,支持全文搜索和模糊查询。但通常不用于排序或…

防御安全播客第214期:数据泄露与漏洞攻防实战

本期播客深入探讨GDPR隐私规则与安全的平衡、伊朗黑客攻击美国大学数据泄露事件、Guccifer 2.0身份揭秘、Orbitz支付卡盗窃案及SamSam勒索软件攻击亚特兰大事件,并分析网络犯罪分子最常利用的顶级漏洞。媒体链接音频源…

windows使用kibana

下载Kibana安装包 https://www.elastic.co/downloads/past-releases#kibana(如果知道版本号也可以直接将最后的kibana换成对应的版本号)上图中两个下拉框分别选择对应的产品和版本,选择好之后点击右边蓝色的Downloa…

VIVADO的IP核 DDS快速采用——生成正弦波,线性调频波

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

03作业

03作业 一、关于static修饰符的问题适合用static修饰的方法:工具类方法(如Math类的abs()、StringUtils的isEmpty()) 工厂方法(用于创建对象的方法) 单例模式的getInstance()方法 与类本身相关而非实例相关的操作不…

软工作业个人项目

这个作业属于哪个课程 计科23级12班这个作业要求在哪里 [个人项目-作业](个人项目 - 作业 - 计科23级12班 - 班级博客 - 博客园)这个作业的目标 设计一个论文查重算法,给出一个原文文件和一个在这份原文上经过了增删改…

rapidxml中接口函数

引言 RapidXML 是一个轻量级 XML 解析库,核心接口围绕 文档解析、节点操作、属性操作 三大类展开。(基于 rapidxml.hpp 核心头文件) 一、文档操作(xml_document<> 类) xml_document<> 是 XML 文档的核心…