1.稀缺数组java实现
1.稀缺数组介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是:
- 记录数组一共有几行几列,有多少个不同的值
- 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
2.代码实现
//稀缺数组
//将存放棋盘的二位数组转化为稀缺数组
public class SparseArray {public static void main(String[] args) {//创建一个原始的二维数组11*11来存放棋盘,0无子,1黑子,2白子int chessArr[][] = new int[11][11];chessArr[1][2]=1;chessArr[2][3]=2;chessArr[4][5]=2;System.out.println("原始的二维数组:");for (int[] row:chessArr){for (int data:row){System.out.printf("%d\t",data);}System.out.println();}//存放当前棋盘有多少个棋子int sum=0;for (int i=0;i<11;i++){for (int j=0;j<11;j++){if (chessArr[i][j]!=0)sum++;}}System.out.println(sum);//存放当前是稀缺数组的第几行int count =1;int sparseArr[][] = new int[sum+1][3];sparseArr[0][0] = 11;sparseArr[0][1] = 11;sparseArr[0][2] = sum;for (int i=0;i<11;i++){for (int j=0;j<11;j++){if (chessArr[i][j]!=0){System.out.println(count);sparseArr[count][0] = i;sparseArr[count][1] = j;sparseArr[count][2] = chessArr[i][j];count++;}}}System.out.println();System.out.println("得到的稀缺数组为:");for (int i = 0; i < sparseArr.length; i++) {System.out.printf("%d\t%d\t%d\t\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]);}//将稀缺数组转化为二维数组//从稀缺数组第一行取得二维数组的大小int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];for (int i=1;i<sparseArr.length;i++){chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];}System.out.println();System.out.println("得到的的二维数组:");for (int[] row:chessArr2){for (int data:row){System.out.printf("%d\t",data);}System.out.println();}}
}
思路来自尚硅谷韩顺平老师数据结构与算法课程
https://www.bilibili.com/video/BV1E4411H73v
1.稀缺数组java实现相关推荐
- 《LeetCode力扣练习》第33题 搜索旋转排序数组 Java
<LeetCode力扣练习>第33题 搜索旋转排序数组 Java 一.资源 题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下 ...
- 对象数组与普通数组 java 0913
对象数组 java 0913 普通数组的定义与使用 public class test2 {public static void main(String[] args) {System.out.pri ...
- java 反射 数组,Java 数组
Java 数组 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com) 内容索引 java.lang.reflect.Array 创建一个数组 访问一个数组 获取数组的 ...
- Java数组– java.util.Arrays
Java Arrays class consists exclusively of static methods that operates on array. Java Arrays类仅由对数组进行 ...
- map和filter方法对于稀缺数组的处理
稀缺数组 有一种数组叫稀缺数组,他的特点就是含有未赋值的索引. 比如: let arr = [1] arr.length = 10 这样一个数组长度为10,但是,除了第一位为1之外,其余的都是空,也就 ...
- java怎样定义一个对象数组,java定义一个对象数组
java怎么定义一个动态数组,Java初学者入门应该掌握的30个概念,java定义一个对象数组,java一维数组定义 摘要: java 是面向对象程序设计语言, 对象数组作为 javase 中的基础. ...
- Java高效率复习-流程控制与数组[Java]
两种基本的流程控制结构:分支结构和循环结构. 分支结构:根据特定的条件来选择性的执行某段代码. 循环结构:根据实现循环条件重复执行某段代码. Java分支结构提供了if和switch语句;循环结构提供 ...
- 二维数组(java)
一.什么是二维数组? (1)从定义的角度:学过一维数组的同学知道,对于一维数组的声明为 int [] arr;同理,如果我们这样声名 int [][] arr,那么此数组即为一个二维数组. (2)从形 ...
- 字符串转数组java 数组转字符串 字符串转数组
字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . | 和 * 等转义字符,必须得加 \.多个分隔符,可以用 | 作为连字符. ...
最新文章
- PHP相关关系及定义
- Qt编译PX4源码,参考如下进行配置
- C#获得枚举类型的长度
- Tomcat报错: JDBC unregister 可能导致内存溢出
- SVN服务器与客户端的配置
- 精准容量、秒级弹性,压测工具 + SAE 方案如何成功突破传统大促难关?
- python中swap函数_python swap
- 一起学Windows Phone7开发(十三.三 输入控件)
- 如何为人员办理离职停保
- dw计算机代码,DW-滚动文字代码.doc
- 微信小程序 自定义导航栏
- 编程c语言经验,C语言编程学习经验3篇
- 中国一线二线三线城市名单
- SPSS正在使用的工作文件或变量集中的所有变量不适合此对话框。
- 角度传感器测量实验 GY-25
- Centos 7 内网安装 DzzOffice
- MFC 时钟 计算器 日期天数计算
- 华为工业云平台:制造业企业数据平台建设最佳实践分享
- stm32f407zgt6的pdr_on引脚怎么接
- 微信小程序的开发与原理
热门文章
- 常见游戏运行错误代码,解决教程!
- 计算机图形学当前研究热点和发展方向,微软亚洲研究院网络图形组深入解释了图形学的现状、发展和未来...
- 新唐 Nuvoton NUC029 入门 点亮板载LED
- 卷积神经网络前向及反向传播过程数学解析
- android 系统中的时区设置
- android简易计算器
- Android Studio 安装应用失败总结
- 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)有什么区别?
- 瞧一瞧看一看啦“一段眼睛跟着鼠标转动的跟踪眼代码”
- UE4虚幻引擎UI界面动画制作!