037 稀疏数组

代码示例 

/*** 生成稀疏数组* @param arr 原数组* @param defaultValue 数组默认值* @return*/
static int[][] extractArray(int[][] arr, int defaultValue) {// 统计有多少个非默认值int count = 0;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {if(arr[i][j] != defaultValue){count++;}}}// 声明稀疏数组int[][] sparseArr = new int[count + 1][3];sparseArr[0][0] = arr.length;sparseArr[0][1] = arr[0].length;sparseArr[0][2] = count;// 向稀疏数组填入数据int index = 1;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {if(arr[i][j] != defaultValue){sparseArr[index][0] = i;sparseArr[index][1] = j;sparseArr[index][2] = arr[i][j];index++;}}}return sparseArr;
}/*** 稀疏数组还原为二维数组* @param arr 稀疏数组* @return*/
static int[][] sparseDilution(int[][] arr, int defaultValue) {int[][] dilutionArr = new int[arr[0][0]][arr[0][1]];// 先填充好默认值for (int i = 0; i < dilutionArr.length; i++) {for (int j = 0; j < dilutionArr[i].length; j++) {dilutionArr[i][j] = defaultValue;}}// 再解析出非默认值的坐标,覆盖值for (int i = 1; i < arr.length; i++) {dilutionArr[arr[i][0]][arr[i][1]] = arr[i][2];}return dilutionArr;
}/*** 打印二维数组* @param arr 二维数组*/
static void printArray(int[][] arr){for (int[] ints : arr) {for (int anInt : ints) {System.out.print("\t" + anInt);}System.out.println();}
}public static void main(String[] args) {// 定义原数组,五子棋盘15×15 0空1黑2白int[][] arr = new int[15][15];arr[7][7] = 1;arr[7][8] = 1;arr[8][8] = 2;arr[9][9] = 2;// 输出原数组System.out.println("原数组为:");printArray(arr);// 调用方法,生成稀疏数组int[][] sparseArr = extractArray(arr, 0);// 输出稀疏数组System.out.println("稀疏数组为:");printArray(sparseArr);// 调用方法,将稀疏数组还原为原数组int[][] dilutionArr = sparseDilution(sparseArr, 0);// 输出还原数组System.out.println("还原数组为:");printArray(dilutionArr);
}

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

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

相关文章

【算法训练营】栈,队列,二叉树习题1-1(python实现)

栈 描述 实现一个栈&#xff0c;完成以下功能&#xff1a; 入栈出栈询问栈中位置Y是谁 一开始栈为空。栈中的位置从1开始&#xff08;即栈底位置为1&#xff09;。 输入 第一行一个整数n&#xff0c;表示操作个数。 接下来n行&#xff0c;每行第一个数字表示操作&#xff08;见…

软考网工笔记1:计算机网络的形成和发展

计算机网络的形成和发展 一、早期的计算机网络 1、1951年&#xff0c;美国麻省理工学院林肯实验室就开始为美国空军设计称为 SAGE 的半自动化地面防空系统&#xff0c;该系统最终于1963年建成&#xff0c;被认为是计算机和通信技术结合的先驱。 2、美国航空公司与 IBM公司在…

谷歌发布AI新品Gemini及收费模式;宜家推出基于GPT的AI家装助手

&#x1f989; AI新闻 &#x1f680; 谷歌发布AI新品Gemini及收费模式 摘要&#xff1a;谷歌宣布将原有的AI产品Bard更名为Gemini&#xff0c;开启了谷歌的AI新篇章。同时推出了强化版的聊天机器人Gemini Advanced&#xff0c;支持更复杂的任务处理&#xff0c;提供了两个月的…

C++服务器端开发(10):性能优化

选择合适的数据结构和算法&#xff1a;使用适当的数据结构和算法可以极大地提高服务器的性能。例如&#xff0c;使用哈希表来快速访问和检索数据&#xff0c;使用平衡二叉树来维护有序的数据等。 减少内存分配和释放&#xff1a;频繁的内存分配和释放操作会导致性能下降。可以…

Mysql Day03

多表设计 一对多 在多的一方添加外键约束&#xff0c;关联另外一方主键 一对一 任意一方添加外键约束&#xff0c;关联另外一方主键 多对多 建立第三张中间表&#xff0c;中间表至少包含两个外键&#xff0c;分别关联两方主键 idstu_idcourse_id 1 11 2 12313421524 案…

融资项目——获取树形结构的数据

如下图所示&#xff0c;下列数据是一个树形结构数据&#xff0c;行业中包含若干子节点。表的设计如下图&#xff0c;设置了一个id为1的虚拟根节点。&#xff08;本树形结构带虚拟根节点共三层&#xff09; 实现逻辑&#xff1a; 延时展示方法&#xff0c;先展现第二层的信息&a…

机器学习8-决策树

决策树&#xff08;Decision Tree&#xff09;是一种强大且灵活的机器学习算法&#xff0c;可用于分类和回归问题。它通过从数据中学习一系列规则来建立模型&#xff0c;这些规则对输入数据进行递归的分割&#xff0c;直到达到某个终止条件。 决策树的构建过程&#xff1a; 1.…

2024年生成式AI芯片市场规模将达500亿美元

1月24日&#xff0c;德勤发布《2024科技、传媒和电信行业预测》中文版报告&#xff0c;2024年是科技、传媒和电信行业关键的一年&#xff0c;不少科技公司正利用生成式AI升级软件和服务&#xff0c;预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许…

【开源】基于JAVA+Vue+SpringBoot的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

Mysql一行记录存储过程

Mysql一行记录存储过程 Mysql的文件架构 行&#xff08;row&#xff09; 数据库表中的记录都是行存放的&#xff0c;每行继续根据不同的行格式都有不同的存储结构。 页&#xff08;page&#xff09; 记录是按照行来存储的&#xff0c;但是数据库的读取是以页为单位的&…

Element-ui date-picker组件报错 date.getHours is not a function

这个错误通常意味着date这个变量并不是一个真正的日期对象&#xff0c;而是其他类型&#xff0c;例如字符串或数字。因此&#xff0c;无法调用日期对象的getHours方法。 在Element-ui中使用date-picker组件时&#xff0c;应该保证绑定的数据是Date对象&#xff0c;而不是其他类…

python-基础篇-列表-脚本

文章目录 01_下标.py02_查找.py03_判断是否存在.py04_体验案例判断是否存在.py05_列表增加数据之append.py06_列表增加数据之extend.py07_列表增加数据之insert.py08_列表删除数据.py09_列表修改数据.py10_列表复制数据.py11_列表的循环遍历之while.py12_列表的循环遍历之for.p…

Goro Shimura似乎不懂模形式

Goro Shimura(1930-2019&#xff0c;Cole奖获得者)&#xff0c; 志村五郎&#xff0c;生前普林斯顿大学教授&#xff0c;日本裔数学家&#xff0c;研究模形式著称。在其名著Introduction to the Arithmetic Theory of Automorphic Functions&#xff08; Princeton University …

Linux 存储管理(磁盘管理、逻辑卷LVM、交换分区swap)

目录 1.磁盘管理 1.1 磁盘简介 1.2 管理磁盘 添加磁盘 管理磁盘流程三步曲 1.查看磁盘信息 2.创建分区 3.创建文件系统 4.挂载mount 5.查看挂载信息 6.MBR扩展分区 7.重启后的影响 2.逻辑卷LVM 2.1 简介 ​​​​​​2.2 创建LVM 2.3 VG管理 2.4 LV管理实战-在…

铱塔 (iita) 开源 IoT 物联网开发平台,基于 SpringBoot + TDEngine +Vue3

01 铱塔 (iita) 物联网平台 铱塔智联 (open-iita) 基于Java语言的开源物联网基础开发平台&#xff0c;提供了物联网及相关业务开发的常见基础功能, 能帮助你快速搭建自己的物联网相关业务平台。 铱塔智联平台包含了品类、物模型、消息转换、通讯组件&#xff08;mqtt/EMQX通讯组…

数组旋转变换分析

&#xff08;1&#xff09;数组初始化 初始化&#xff1a;[1,2,3,4,5,6,7,8] 其中1,5是一对&#xff0c;2,6是一对&#xff0c;3,7是一对&#xff0c;4,8是一对。 &#xff08;2&#xff09;任意旋转 把左边若干个数放到数组右边 新的数组和[x,x1......x7]mod 8同余 &…

学习Android的第八天

目录 Android ImageView 图像视图 ImageView 的基本使用 src属性和background属性的区别 范例 解决 anndroid:blackground 属性拉伸导致图片变形的方法 设置透明度的问题 范例 android:src 和 android:background 结合 范例 Java 代码中设置 blackground 和 src 属性…

基于鲲鹏服务器的LNMP配置

基于鲲鹏服务器的LNMP配置 系统 Centos8 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) 卸载已经存在的旧版本的安装包 # rpm -qa | grep php #查看已经安装的PHP旧版本# rpm -qa | grep php | xargs rpm -e #卸载已经安装的旧版&#xff0c;如果提示有…

OpenCV 笔记(21):图像色彩空间

1. 图像色彩空间 图像色彩空间是用于定义颜色范围的数学模型。 它规定了图像中可以使用的颜色以及它们之间的关系。它决定了图像中可以显示的颜色范围。不同的色彩空间可以包含不同的颜色范围&#xff0c;因此选择合适的色彩空间对于确保图像在不同设备上看起来一致非常重要。…

跳跃表的底层实现

跳跃表的底层是由 C 语言实现的&#xff0c;它的实现源码如下&#xff1a; typedef struct zskiplistNode {// 成员对象robj *obj;double score; // 分值struct zskiplistNode *backward; // 回退指针//层struct zskiplistLevel {// 前进指针struct zskiplistNode *forward;//…