1.稀缺数组介绍

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

稀疏数组的处理方法是:

  1. 记录数组一共有几行几列,有多少个不同的值
  2. 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

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实现相关推荐

  1. 《LeetCode力扣练习》第33题 搜索旋转排序数组 Java

    <LeetCode力扣练习>第33题 搜索旋转排序数组 Java 一.资源 题目: 整数数组 nums 按升序排列,数组中的值 互不相同 . 在传递给函数之前,nums 在预先未知的某个下 ...

  2. 对象数组与普通数组 java 0913

    对象数组 java 0913 普通数组的定义与使用 public class test2 {public static void main(String[] args) {System.out.pri ...

  3. java 反射 数组,Java 数组

    Java 数组 作者: Jakob Jenkov 译者:叶文海(yewenhai@gmail.com) 内容索引 java.lang.reflect.Array 创建一个数组 访问一个数组 获取数组的 ...

  4. Java数组– java.util.Arrays

    Java Arrays class consists exclusively of static methods that operates on array. Java Arrays类仅由对数组进行 ...

  5. map和filter方法对于稀缺数组的处理

    稀缺数组 有一种数组叫稀缺数组,他的特点就是含有未赋值的索引. 比如: let arr = [1] arr.length = 10 这样一个数组长度为10,但是,除了第一位为1之外,其余的都是空,也就 ...

  6. java怎样定义一个对象数组,java定义一个对象数组

    java怎么定义一个动态数组,Java初学者入门应该掌握的30个概念,java定义一个对象数组,java一维数组定义 摘要: java 是面向对象程序设计语言, 对象数组作为 javase 中的基础. ...

  7. Java高效率复习-流程控制与数组[Java]

    两种基本的流程控制结构:分支结构和循环结构. 分支结构:根据特定的条件来选择性的执行某段代码. 循环结构:根据实现循环条件重复执行某段代码. Java分支结构提供了if和switch语句;循环结构提供 ...

  8. 二维数组(java)

    一.什么是二维数组? (1)从定义的角度:学过一维数组的同学知道,对于一维数组的声明为 int [] arr;同理,如果我们这样声名 int [][] arr,那么此数组即为一个二维数组. (2)从形 ...

  9. 字符串转数组java 数组转字符串 字符串转数组

    字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . | 和 * 等转义字符,必须得加 \.多个分隔符,可以用 | 作为连字符. ...

最新文章

  1. PHP相关关系及定义
  2. Qt编译PX4源码,参考如下进行配置
  3. C#获得枚举类型的长度
  4. Tomcat报错: JDBC unregister 可能导致内存溢出
  5. SVN服务器与客户端的配置
  6. 精准容量、秒级弹性,压测工具 + SAE 方案如何成功突破传统大促难关?
  7. python中swap函数_python swap
  8. 一起学Windows Phone7开发(十三.三 输入控件)
  9. 如何为人员办理离职停保
  10. dw计算机代码,DW-滚动文字代码.doc
  11. 微信小程序 自定义导航栏
  12. 编程c语言经验,C语言编程学习经验3篇
  13. 中国一线二线三线城市名单
  14. SPSS正在使用的工作文件或变量集中的所有变量不适合此对话框。
  15. 角度传感器测量实验 GY-25
  16. Centos 7 内网安装 DzzOffice
  17. MFC 时钟 计算器 日期天数计算
  18. 华为工业云平台:制造业企业数据平台建设最佳实践分享
  19. stm32f407zgt6的pdr_on引脚怎么接
  20. 微信小程序的开发与原理

热门文章

  1. 常见游戏运行错误代码,解决教程!
  2. 计算机图形学当前研究热点和发展方向,微软亚洲研究院网络图形组深入解释了图形学的现状、发展和未来...
  3. 新唐 Nuvoton NUC029 入门 点亮板载LED
  4. 卷积神经网络前向及反向传播过程数学解析
  5. android 系统中的时区设置
  6. android简易计算器
  7. Android Studio 安装应用失败总结
  8. 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)有什么区别?
  9. 瞧一瞧看一看啦“一段眼睛跟着鼠标转动的跟踪眼代码”
  10. UE4虚幻引擎UI界面动画制作!