亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)二維數(shù)組和稀疏數(shù)組之間的轉(zhuǎn)換

 更新時(shí)間:2021年06月27日 16:21:01   作者:nsq1101  
本文主要介紹了Java 二維數(shù)組和稀疏數(shù)組轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

用Java實(shí)現(xiàn)二維數(shù)據(jù)和稀疏數(shù)組之間的轉(zhuǎn)換

1. 需求和思路分析

1.1 以二維數(shù)組的格式模擬棋盤(pán)、地圖等類(lèi)似的二維結(jié)構(gòu)為基礎(chǔ),與稀疏數(shù)組之間進(jìn)行轉(zhuǎn)化。

1.2 思路分析

二維數(shù)組轉(zhuǎn)化為稀疏數(shù)組

  • 遍歷原始的二維數(shù)組,得到有效數(shù)據(jù)個(gè)數(shù) sum
  • 根據(jù)sum就可以創(chuàng)建稀疏數(shù)組sparseArr int[sunm+1][3]
  • 將二維數(shù)組的有效數(shù)據(jù)存入到稀疏數(shù)組

稀疏數(shù)組轉(zhuǎn)為二維數(shù)組

  • 先讀取稀疏數(shù)組的第一行,根據(jù)第一行的數(shù)據(jù),創(chuàng)建原始的二維數(shù)組
  • 再讀取稀疏數(shù)組后幾行的數(shù)據(jù),并賦給原始的二維數(shù)組即可。

2.代碼實(shí)現(xiàn)和展示

2.1 二維數(shù)組與稀疏數(shù)組之間的轉(zhuǎn)化程序

public class SparseArr {

    public static void main(String[] args) {
        // 創(chuàng)建一個(gè)原始的二維數(shù)組 11 * 11
        // 0: 沒(méi)有棋子;1:黑棋;2:白棋
        int[][] chessArr = new int[11][11];
        chessArr[1][2] = 1;
        chessArr[2][3] = 2;
        chessArr[2][6] = 1;

        // 打印輸出原始二維數(shù)組
        System.out.print("原始二維數(shù)組為:\n");
        for(int[] a : chessArr ){
            for (int item : a ){
                System.out.printf( "%d\t", item );
            }
            System.out.println();

        }

        //將二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組思路
        // 1、遍歷二維數(shù)組,統(tǒng)計(jì)有效數(shù)據(jù)的個(gè)數(shù)sum
        int sum = 0;
        for(int i=0;i < chessArr.length;i++){
            for(int j=0;j < chessArr[0].length;j++){
                if(chessArr[i][j] != 0){
                    sum++;
                }
            }
        }
        System.out.println("有效數(shù)據(jù)的個(gè)數(shù)為:" + sum);

        //2、建立稀疏數(shù)組,行列值
        int[][] sparseArr = new int[sum+1][3];

        //3、遍歷原始二維數(shù)組轉(zhuǎn)換為稀疏數(shù)組中的數(shù)據(jù)
        sparseArr[0][0] = 11;
        sparseArr[0][1] = 11;
        sparseArr[0][2] = sum;

        int count=1;
        for(int i=0;i < 11;i++){
            for(int j=0;j < 11;j++){
                if(chessArr[i][j] != 0){
                    sparseArr[count][0] = i;
                    sparseArr[count][1] = j;
                    sparseArr[count][2] = chessArr[i][j];
                    count++;
                }
            }
        }

        //4 輸出稀疏數(shù)組
        System.out.println("稀疏數(shù)組為:");
        for (int[] row : sparseArr) {
        //     for (int data : row) {
        //         System.out.printf( "%d\t",data);  
        //     }
        //     System.out.println();  
        // }
    
            System.out.printf("%d\t%d\t%d\t\n", row[0],row[1],row[2]);
        }

        // 將稀疏數(shù)組轉(zhuǎn)化為二維數(shù)組
        // 1.讀取稀疏數(shù)組首行數(shù)據(jù),建立二維數(shù)組
        int[][] chessArr2 = new  int[sparseArr[0][0]][sparseArr[0][1]];

        // 2. 遍歷稀疏數(shù)組,賦值給二維數(shù)組
        for (int i=1;i < sparseArr.length;i++) {
            chessArr2[sparseArr[1][0]][sparseArr[1][1]] = sparseArr[i][2];
        }
        
        // 3. 打印輸出原始的二維數(shù)組
        System.out.print("原始二維數(shù)組為:\n");
        for (int[] row : chessArr2) {
            for (int data : row) {
                System.out.printf("%d\t", data); 
            }
            System.out.println();
        }
    } 
}

2.2 二維數(shù)組轉(zhuǎn)化為稀疏數(shù)組展示

原始二維數(shù)組為:
0       0       0       0       0       0       0       0       0       0       0
0       0       1       0       0       0       0       0       0       0       0
0       0       0       2       0       0       1       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
有效數(shù)據(jù)的個(gè)數(shù)為:3
稀疏數(shù)組為:
11      11      3
1       2       1
2       3       2
2       6       1
原始二維數(shù)組為:
0       0       0       0       0       0       0       0       0       0       0
0       0       1       0       0       0       0       0       0       0       0
0       0       0       2       0       0       1       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0
0       0       0       0       0       0       0       0       0       0       0

3. 總結(jié)

用Java語(yǔ)言實(shí)現(xiàn)二者之間的轉(zhuǎn)化,思路很重要,按著思路寫(xiě)代碼就會(huì)很省事,難的點(diǎn)可能是不知道如何寫(xiě)代碼。
注意:printf 和 print 輸出的格式不同。

參考視頻

尚硅谷Java數(shù)據(jù)結(jié)構(gòu)與java算法(Java數(shù)據(jù)結(jié)構(gòu)與算法)

到此這篇關(guān)于Java實(shí)現(xiàn)二維數(shù)組和稀疏數(shù)組之間的轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java 二維數(shù)組和稀疏數(shù)組轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot項(xiàng)目啟動(dòng)過(guò)程動(dòng)態(tài)修改接口請(qǐng)求路徑的解決方案

    SpringBoot項(xiàng)目啟動(dòng)過(guò)程動(dòng)態(tài)修改接口請(qǐng)求路徑的解決方案

    在SpringBoot服務(wù)整合過(guò)程中,遇到了多個(gè)服務(wù)中相同RequestMapping路徑導(dǎo)致的啟動(dòng)問(wèn)題,解決方案是通過(guò)修改RequestMappingHandlerMapping類(lèi)的getMappingForMethod方法,本文給大家介紹SpringBoot修改接口請(qǐng)求路徑的解決方案,感興趣的朋友一起看看吧
    2024-09-09
  • Mybatis利用OGNL表達(dá)式處理動(dòng)態(tài)sql的方法教程

    Mybatis利用OGNL表達(dá)式處理動(dòng)態(tài)sql的方法教程

    這篇文章主要給大家介紹了關(guān)于Mybatis利用OGNL表達(dá)式處理動(dòng)態(tài)sql的方法教程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • SpringBoot接口請(qǐng)求入?yún)⒑统鰠⒃鰪?qiáng)的五種方法

    SpringBoot接口請(qǐng)求入?yún)⒑统鰠⒃鰪?qiáng)的五種方法

    這篇文章主要介紹了SpringBoot接口請(qǐng)求入?yún)⒑统鰠⒃鰪?qiáng)的五種方法,使用`@JsonSerialize`和`@JsonDeserialize`注解,全局配置Jackson的`ObjectMapper`,使用`@ControllerAdvice`配合`@InitBinder`,自定義HttpMessageConverter和使用AOP進(jìn)行切面編程,需要的朋友可以參考下
    2024-07-07
  • 8張圖帶你全面了解Java?kafka的核心機(jī)制

    8張圖帶你全面了解Java?kafka的核心機(jī)制

    kafka是目前企業(yè)中很常用的消息隊(duì)列產(chǎn)品,可以用于削峰、解耦、異步通信,本文就通過(guò)幾張圖帶大家全面認(rèn)識(shí)一下kafka,現(xiàn)在我們不妨帶入kafka設(shè)計(jì)者的角度去思考該如何設(shè)計(jì),它的架構(gòu)是怎么樣的、都有哪些組件組成、如何進(jìn)行擴(kuò)展等等,需要的朋友可以參考下
    2023-05-05
  • Spring?Security實(shí)現(xiàn)HTTP認(rèn)證

    Spring?Security實(shí)現(xiàn)HTTP認(rèn)證

    本文主要介紹了Spring?Security實(shí)現(xiàn)HTTP認(rèn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-06-06
  • java設(shè)計(jì)模式之工廠方法模式

    java設(shè)計(jì)模式之工廠方法模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之工廠方法模式,什么是java工廠方法模式,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Java多線程之死鎖的出現(xiàn)和解決方法

    Java多線程之死鎖的出現(xiàn)和解決方法

    本篇文章主要介紹了Java多線程之死鎖的出現(xiàn)和解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行

    在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行

    這篇文章主要介紹了在Java中實(shí)現(xiàn)讓線程按照自己指定的順序執(zhí)行,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 身份證號(hào)碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn)

    身份證號(hào)碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn)

    這篇文章主要介紹了身份證號(hào)碼驗(yàn)證算法深入研究和Java實(shí)現(xiàn),本文講解了18身份證號(hào)碼的結(jié)構(gòu)、根據(jù)17位數(shù)字本體碼獲取最后一位校驗(yàn)碼程序?qū)嵗葍?nèi)容,需要的朋友可以參考下
    2015-06-06
  • spring學(xué)習(xí)之創(chuàng)建項(xiàng)目 Hello Spring實(shí)例代碼

    spring學(xué)習(xí)之創(chuàng)建項(xiàng)目 Hello Spring實(shí)例代碼

    這篇文章主要介紹了spring學(xué)習(xí)之創(chuàng)建項(xiàng)目 Hello Spring實(shí)例代碼,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論