Java数据结构与算法从初阶到大牛

news2024/10/5 18:28:09

一、我们从一个小例题看起

因为该二维数组的很多默认值为0,因此记录了很多没有意义的数据-->稀疏数组

二、基本介绍

当一个数组中大部分元素为0,或者为同一个值时,可以使用洗漱数组来保存数组

稀疏数组的处理方法是:

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

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

三、稀疏数组距离说明

我们从例题看起:(是这样的)

四、我们如何用java代码去实现

4.1分析

4.2代码实现 

package com.atguigu.sparsearray;

public class SparseArray {

    public static void main(String[] args) {
        // 创建一个原始的二维数组11*11
        // 0:表示没有棋子,1表示黑子 2表示蓝子
        int chessArr1[][] = new int[11][11];
        chessArr1[1][2] = 1;
        chessArr1[2][3] = 2;

        // 输出原始的二维数组
        System.out.println("原始的二维数组");
        for (int[] row : chessArr1) {
            for (int data : row) {
                System.out.printf("%d\t", data);
            }
            System.out.println();
        }

        // 将二维数组转换为稀疏数组
        // 1. 先遍历二维数组得到非0数据的个数
        int sum = 0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (chessArr1[i][j] != 0) {
                    sum++;
                }
            }
        }

        // 2. 创建对应的稀疏数组
        int sparseArr[][] = new int[sum + 1][3];
        // 给稀疏数组赋值
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = sum;

        // 遍历二维数组,将非0的值存放在稀疏数组中
        int count = 0; // count 用于记录是第几个非0数据
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (chessArr1[i][j] != 0) {
                    count++;
                    sparseArr[count][0] = i;
                    sparseArr[count][1] = j;
                    sparseArr[count][2] = chessArr1[i][j];
                }
            }
        }

        // 输出稀疏数组的形式
        System.out.println();
        System.out.println("得到的稀疏数组为~~~~");
        for (int i = 0; i < sparseArr.length; i++) {
            System.out.printf("%d\t%d\t%d\t", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]);
            System.out.println();
        //将稀疏数组--》恢复成原始的二维数组
        /*
         * 1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面chessArr2 = in
         * 2.在读取稀疏数组后几行的数据,并赋值给原始的二维数组即可。
         */
         //1.
            int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
         //2.
            for(int i1 = 1; i1 < sparseArr.length; i1++) {
            	chessArr2[sparseArr[i1][0]][sparseArr[i1][1]] = sparseArr[i1][2];
            }
         // 输出恢复后的二维数组
            System.out.println();
            System.out.println("恢复后的二维数组");
            for (int[] row : chessArr2) {
                for (int data : row) {
                    System.out.printf("%d\t", data);
                }
                System.out.println();
            }
        }
    }
}

4.3结果展示

4.4结果解释

这个代码首先创建一个原始的二维棋盘数组,然后将其转换为稀疏数组。接下来,它从稀疏数组恢复出原始的二维数组并输出结果 ,具体的代码含义在java代码中我已给出含义,希望可以帮助到你理解

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

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

相关文章

私域流量的变现方式,你知道多少?

私域流量的变现方式是指通过有效的管理和运营自有的用户群体&#xff0c;将流量转化为实际收益的过程。私域流量的变现方式多样&#xff0c;下面将介绍其中几种常见的方式。 1. 电商平台入驻 通过将自有流量引导到电商平台&#xff0c;开设店铺进行商品销售&#xff0c;从中获…

《C++ primer plus》精炼(OOP部分)——对象和类(6)

“学习不是生活的一部分&#xff0c;而是构建生活的全部。”——约翰杜 文章目录 第12章&#xff1a;类和动态内存分配第1版&#xff1a;Stringbad类错误小知识点&#xff1a;new和delete的对应使用 第二版&#xff1a;String类构造函数中使用new时的注意事项 第12章&#xff1…

【校招VIP】java语言考点之嵌套类内部类

考点介绍&#xff1a; 嵌套类&内部类问题在校招面试中经常出现。以在一个类的内部定义另一个类&#xff0c;这种类称为嵌套类(nested classes)&#xff0c;它有两种类型: 静态嵌套类和非静态嵌套类。静态嵌套类使用很少最重要的是非静态嵌套类&#xff0c;也即是被称作为内…

spring-2.5.6升级为spring-4.3.13过程记录

一、首先不管三七二十一&#xff0c;把spring-2.5.6的包全删除了 引进spring-4.3.13的包 二、参考https://blog.csdn.net/weixin_33978016/article/details/92103733修改 web.xml修改&#xff0c;我原项目跟他一样&#xff0c;所以不用改 修改前 <servlet><servlet…

Spring之bean的生命周期源码解析

Spring最重要的功能就是帮助程序员创建对象&#xff08;也就是IOC&#xff09;&#xff0c;而启动Spring就是为创建Bean对象做准备&#xff0c;所以我们先明白Spring到底是怎么去创建Bean的&#xff0c;也就是先弄明白Bean的生命周期。 Bean的生命周期就是指&#xff1a;在Spr…

AI创作专家,免费的AI创作专家工具

AI创作专家是一种崭新的工具&#xff0c;它们利用先进的人工智能技术&#xff0c;帮助创作者和写手更轻松地应对创作挑战。这些工具不仅可以生成文字&#xff0c;还可以提供灵感、帮助构思和组织思路&#xff0c;使创作过程更加高效。 147GPT批量文章生成工具​www.147seo.com/…

【python】ray库使用

【python】ray库使用 安装案例运行案例代码&#xff08;torch&#xff09;运行输出解释案例代码&#xff08;tensorflow&#xff09;运行结果 安装 注意事项&#xff1a; 在windows下&#xff0c;需要python版本3.7以上&#xff0c;详见https://docs.ray.io/en/latest/ray-ove…

DT 卡通材质学习 一

渐变着色器 相交线 笔刷和卡通结合使用 修改器

停车场系统源码

源码下载地址&#xff08;小程序开源地址&#xff09;&#xff1a;停车场系统小程序&#xff0c;新能源电动车充电系统&#xff0c;智慧社区物业人脸门禁小程序: 【涵盖内容】&#xff1a;城市智慧停车系统&#xff0c;汽车新能源充电&#xff0c;两轮电动车充电&#xff0c;物…

VSCode远程连接服务器报错:Could not establish connection to

参考&#xff1a;https://blog.csdn.net/weixin_42538848/article/details/118113262 https://www.jb51.net/article/219138.htm 刚开始把ssh文件夹中的known_hosts给删除了&#xff0c;发现没啥用。 之后在扩展Remote-SSH里面&#xff0c;把config file路径设置为ssh文件夹里…

壁炉的智能化:现代设计师的创新挑战

壁炉一直以来都是家庭的焦点之一&#xff0c;不仅因为它们提供了温暖&#xff0c;更因为它们在室内空间中的装饰价值。然而&#xff0c;如今的壁炉不再仅仅是传统的取暖设备&#xff0c;它们变得更加智能化&#xff0c;提供了更多的功能和便利性。对于室内设计师来说&#xff0…

Nginx图片防盗链

原理 浏览器向web服务器发送请求时一般会在header中带上Referer信息&#xff0c;服务器可以借此获得一些信息用来处理盗链 不过Referer头信息其实是可以伪装生成的&#xff0c;所以通过Referer信息防盗链并非100%可靠 具体方法 核心点就是在Nginx配置文件中&#xff0c;加入…

我的Qt作品(19)使用Qt写一个轻量级的视觉框架---第2章,仿海康VM实现思维导图拖拽方式的算法流程图

上次写的第1章介绍了主界面的设计。 https://blog.csdn.net/libaineu2004/article/details/130277151 本次是第2章&#xff0c;主要介绍流程图的运行。 目前市面上视觉框架很多&#xff0c;主要有列表图方式和流程图方式。海康VM的流程图方式比较受用户的喜爱和欢迎&#xf…

记一次失败的pip使用经历

python如何使用pip工具下载第三方库&#xff1f; 首先&#xff0c;安装并配置好python和pip的环境&#xff0c;特别注意pip放在python的script文件下&#xff0c;有pip和pip3两种&#xff0c;选择pip3版本。如下图所示。 然后打开命令行窗口&#xff0c;检查python和pip工具是…

iterator和generator

iterator和generator iterator es6: let/const ...展开 迭代器 是一种机制&#xff0c;比如在控制台输出Iterator是没有这个类的&#xff0c;为不同的数据结构提供迭代循环的机制。 迭代器对象&#xff1a;具备next方法&#xff0c;next能够对你指定的数据进行迭代循环&#x…

Vue 的组件加载顺序和渲染顺序

1、结论先行 组件的加载顺序是自上而下的&#xff0c;也就是先加载父组件&#xff0c;再递归地加载其所有的子组件。 而组件渲染顺序是按照深度优先遍历的方式&#xff0c;也就是先渲染最深层的子组件&#xff0c;再依次向上渲染其父组件。 2、案例 下面是一个简单的示例代…

灰度变换 几种常见的空间滤波,例如均值、中值滤波(数字图像处理概念 P3)

文章目录 背景知识 & 一些基础的变换直方图处理 ★均值滤波器中值滤波器锐化空间滤波器 增强的首要目标是处理图像&#xff0c;使其更适合某些应用 图像质量的视觉评价是一种高度主观的过程 背景知识 & 一些基础的变换 直方图处理 ★ 均值滤波器 中值滤波器 锐化空间滤…

接口自动化测试之Requests模块详解

Python中&#xff0c;系统自带的urllib和urllib2都提供了功能强大的HTTP支持&#xff0c;但是API接口确实太难用了。Requests 作为更高一层的封装&#xff0c;在大部分情况下对得起它的slogan——HTTP for Humans。 让我们一起来看看 Requests 这个 HTTP库在我们接口自动化测试…

关键点检测 HRNet网络详解笔记

关键点检测 HRNet网络详解笔记 0、COCO数据集百度云下载地址1、背景介绍2、HRNet网络结构3、预测结果&#xff08;heatmap&#xff09;的可视化3、COCO数据集中标注的17个关键点4、损失的计算5、评价准则6、数据增强7、模型训练 论文名称&#xff1a; Deep High-Resolution Rep…

Parasoft Jtest 2023.1

Parasoft Jtest 2023.1 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/