總目錄:地址如下看總綱
1厅克、何為稀疏數(shù)組
稀疏數(shù)組布讹,首先把稀疏拆出來,理解為寫程序的你浩村,頭發(fā)日漸稀疏,漸少占哟。
比如一個棋盤心墅,可以用二位數(shù)組表示,這個棋牌(只有三種數(shù)據(jù)榨乎,0為沒有棋子怎燥,1為黑棋,2為白棋)
2蜜暑、應用場景
比如 一些量大铐姚,且多數(shù)為重復值的時候,可以使用(棋牌肛捍,地圖等等)
3隐绵、圖和說明:
1、記錄數(shù)組有幾行幾列拙毫,有多少了不同的值
2依许、把具體不同值的元素中的列和行和值(棋子的顏色)記錄在一個小規(guī)模的數(shù)組中,從而縮小程序的規(guī)模
3缀蹄、需要主要的是列是固定(行悍手,列,值)袍患,行不固定(取決于有棋子才獲取行數(shù)據(jù))
image.png
4坦康、二位數(shù)組轉(zhuǎn)稀疏數(shù)組
(1)思路:
1、首先注意的是诡延,行和列這里設計都從零開始(因為遍歷我打算從0開始)
2滞欠、遍歷原始二位數(shù)組,獲取到有效值個數(shù) sum(有效值:就是除了初始化0值以外的)
3肆良、再根據(jù) sum 創(chuàng)建出 稀疏數(shù)組 長度 sparsearray[sum+1][3](可以理解就理解筛璧,不行就當公式記下來)
4、將要二位數(shù)組的有效數(shù)據(jù)存放到稀疏數(shù)組中(有效數(shù)據(jù):行惹恃,列夭谤,值【1,2】)
(2)代碼:
image.png
image.png
5巫糙、稀疏數(shù)組轉(zhuǎn)二位數(shù)組
(1)思路:
1朗儒、先根據(jù)稀疏數(shù)組的第一行,創(chuàng)建出 原始數(shù)組的長度 11*11
2、在讀取稀疏數(shù)組的后面行數(shù)(第二行開始)醉锄,將稀疏有效值(V)賦值給原始數(shù)組的行列
(2)代碼:
image.png
image.png
6乏悄、稀疏數(shù)組序列化和反序列化
image.png
image.png
image.png
image.png