從圍棋了解稀疏數(shù)組

1、使用場景

當(dāng)一個數(shù)組中大部分元素是0或者為同一個值的數(shù)組時盆顾,可以使用稀疏數(shù)組來保存該數(shù)組
比如點(diǎn)陣存在大量重復(fù)的數(shù)據(jù)障簿,我們沒必要耗那么大的空間來存儲每一個元素还惠,就可以使用稀疏數(shù)組來保存這樣的點(diǎn)陣數(shù)據(jù)

2、圍棋復(fù)盤演示稀疏數(shù)組代碼

雖然這不是一個很好的例子煌珊,但是可以幫助我們理解稀疏數(shù)組号俐,主要是因為圍棋存在要到最后一子定輸贏的時候,此時稀疏數(shù)組既要保存坐標(biāo)信息定庵,還要保存數(shù)據(jù)信息吏饿,反而擴(kuò)大了程序的規(guī)模增大了內(nèi)存的開銷,此處只是為了便于理解蔬浙,在存在大量重復(fù)數(shù)據(jù)的點(diǎn)陣猪落,比如csv格式文件的傳輸上,就可以考慮使用稀疏數(shù)組來壓縮空間傳輸畴博。

描述:
創(chuàng)建一個20*20大小的圍棋棋盤笨忌,0表示沒子,1表示此處有白子俱病,2表示此處有黑子

package algorithm;

import java.util.Arrays;

public class SparseArrayDemo {
        public static void main(String[] args) {
                //創(chuàng)建一個20*20大小的棋盤
                int[][]  checkerboard = new int[20][20];
                checkerboard[5][6] = 1;
                checkerboard[6][7] = 2;
                //創(chuàng)建稀疏數(shù)組
                //first:查找有效值的個數(shù)
                int valid_value_num = 0;
                for(int[] arr : checkerboard){
                        for (int i = 0; i < arr.length; i++) {
                                if(arr[i] != 0) valid_value_num+=1;
                        }
                }
                //second:創(chuàng)建稀疏數(shù)組官疲,包含有效值個數(shù)+1個數(shù)組(第一行需要存儲棋盤大小信息,邊于復(fù)盤)
                //大小為3亮隙,橫坐標(biāo)途凫,縱坐標(biāo)值,數(shù)據(jù)
                int[][] sparseArray = new int[valid_value_num+1][3];
                //棋盤長度
                sparseArray[0][0] = checkerboard.length;
                //棋盤寬度
                sparseArray[0][1] = checkerboard[0].length;
                //存儲數(shù)據(jù)到稀疏數(shù)組
                int index = 1;
                for(int i = 0; i < checkerboard.length; i++){
                        for(int j = 0; j < checkerboard[0].length; j++){
                                if(checkerboard[i][j] != 0) {
                                        sparseArray[index][0] = i;
                                        sparseArray[index][1] = j;
                                        sparseArray[index][2] = checkerboard[i][j] ;
                                        index+=1;
                                }
                        }
                }
                //復(fù)盤
                int[][] resume_array = new int[sparseArray[0][0]][sparseArray[0][1]];
                for (int i = 1; i < sparseArray.length; i++) {
                        resume_array[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
                }
                //查看復(fù)盤數(shù)據(jù)
                for (int i = 0; i < resume_array.length; i++) {
                        System.out.println(Arrays.toString(resume_array[i]));
                }
        }
}

純屬個人觀點(diǎn)哈咱揍,歡迎大佬留言批評指正~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颖榜,一起剝皮案震驚了整個濱河市棚饵,隨后出現(xiàn)的幾起案子煤裙,更是在濱河造成了極大的恐慌掩完,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硼砰,死亡現(xiàn)場離奇詭異且蓬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)题翰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門恶阴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豹障,你說我怎么就攤上這事冯事。” “怎么了血公?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵昵仅,是天一觀的道長。 經(jīng)常有香客問我累魔,道長摔笤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任垦写,我火速辦了婚禮吕世,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梯投。我一直安慰自己命辖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布分蓖。 她就那樣靜靜地躺著吮龄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咆疗。 梳的紋絲不亂的頭發(fā)上漓帚,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音午磁,去河邊找鬼尝抖。 笑死,一個胖子當(dāng)著我的面吹牛迅皇,可吹牛的內(nèi)容都是我干的昧辽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼登颓,長吁一口氣:“原來是場噩夢啊……” “哼搅荞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咕痛,失蹤者是張志新(化名)和其女友劉穎痢甘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茉贡,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塞栅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腔丧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片放椰。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖愉粤,靈堂內(nèi)的尸體忽然破棺而出砾医,到底是詐尸還是另有隱情,我是刑警寧澤衣厘,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布藻烤,位于F島的核電站,受9級特大地震影響头滔,放射性物質(zhì)發(fā)生泄漏怖亭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一坤检、第九天 我趴在偏房一處隱蔽的房頂上張望兴猩。 院中可真熱鬧,春花似錦早歇、人聲如沸倾芝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晨另。三九已至,卻和暖如春谱姓,著一層夾襖步出監(jiān)牢的瞬間借尿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工屉来, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留路翻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓茄靠,卻偏偏與公主長得像茂契,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子慨绳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容