數(shù)組

一脸秽,稀疏數(shù)組

一骂删,稀疏數(shù)組的應(yīng)用場(chǎng)景

當(dāng)一個(gè)數(shù)組中大部分元素為0掌动,或者為同一個(gè)值的數(shù)組時(shí),可以使用稀疏數(shù)組來保

存該數(shù)組宁玫。

二粗恢,稀疏數(shù)組的處理方法

1)記錄數(shù)組一共有幾行幾列,有多少個(gè)不同的值

2)把具有不同值的元素的行列及值記錄在一個(gè)小規(guī)模的數(shù)組中撬统,從而縮小程序的規(guī)模

三适滓,二維數(shù)組和稀疏數(shù)組互相轉(zhuǎn)換的思路

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

1).遍歷原始的二維數(shù)組,得到有效數(shù)據(jù)的個(gè)數(shù)sum

2).根據(jù)sum就可以創(chuàng)建稀疏數(shù)組sparseArr int[sum+1][3]

3).將二維數(shù)組的有效數(shù)據(jù)存入到稀疏數(shù)組

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

1).先讀取稀疏數(shù)組的第一行恋追,根據(jù)第一行的數(shù)據(jù)凭迹,創(chuàng)建原始的二維數(shù)組

2).在讀取稀疏數(shù)組后幾行的數(shù)據(jù),并賦給原始的二維數(shù)組即可

四苦囱,代碼實(shí)現(xiàn)

public class SparseArry {

public static void main(String[] args) {

int cheesArray1[][] = new int[11][11];

cheesArray1[1][2] = 1;

cheesArray1[2][3] = 2;

System.out.println("原始的二維數(shù)組為:");

for (int[] row : cheesArray1) {

for (int data : row) {

System.out.printf("%d\t", data);

}

System.out.println();

}

// 將原始的二維數(shù)組轉(zhuǎn)換成稀疏數(shù)組

int sum = 0;

for (int i = 0; i < cheesArray1.length; i++) {

for (int j = 0; j < cheesArray1[i].length; j++) {

if (cheesArray1[i][j] != 0) {

sum++;

}

}

}

int sparseArray[][] = new int[sum + 1][3];

sparseArray[0][0] = 11;

sparseArray[0][1] = 11;

sparseArray[0][2] = sum;

int count = 0;

for (int i = 0; i < cheesArray1.length; i++) {

for (int j = 0; j < cheesArray1[i].length; j++) {

if (cheesArray1[i][j] != 0) {

count++;

sparseArray[count][0] = i;

sparseArray[count][1] = j;

sparseArray[count][2] = cheesArray1[i][j];

}

}

}

System.out.println();

System.out.println("轉(zhuǎn)換后的稀疏數(shù)組為:");

for (int i = 0; i < sparseArray.length; i++) {

System.out.printf("%d\t%d\t%d\t\n", sparseArray[i][0], sparseArray[i][1], sparseArray[i][2]);

}

// 將稀疏數(shù)組回復(fù)為原始二維數(shù)組

System.out.println("恢復(fù)后的原始二維數(shù)組為:");

// 1.創(chuàng)建一個(gè)新的數(shù)組

int cheesArray2[][] = new int[sparseArray[0][0]][sparseArray[0][1]];

for (int i = 1; i < sparseArray.length; i++) {

cheesArray2[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];

}

for (int[] row : cheesArray2) {

for (int data : row) {

System.out.printf("%d\t", data);

}

System.out.println();

}

}

}

二嗅绸,隊(duì)列

一.隊(duì)列的介紹

隊(duì)列是一個(gè)有序列表,可以用數(shù)組或是鏈表來實(shí)現(xiàn)撕彤,遵循先入先出的原則鱼鸠,即:先存入隊(duì)列的數(shù)據(jù)要先取出猛拴,后存入的要后取出。

二.使用數(shù)組模擬隊(duì)列

隊(duì)列本身是有序列表蚀狰,若使用數(shù)組的結(jié)構(gòu)來存儲(chǔ)隊(duì)列的數(shù)據(jù)愉昆,其中maxSize是隊(duì)列的最大容量。

因?yàn)殛?duì)列的輸出麻蹋,輸入是分別從前后端來處理的跛溉,因此需要兩個(gè)變量front及rear分別記錄隊(duì)列前后端的下標(biāo),front會(huì)隨著數(shù)據(jù)輸出而改變扮授,而rear則是隨著數(shù)據(jù)輸入而改變

隊(duì)列

數(shù)組模擬隊(duì)列

?當(dāng)我們將數(shù)據(jù)存 入隊(duì)列時(shí)稱為”addQueue", addQueue 的處理需要有兩個(gè)步

驟:思路分析

1)將尾指針往后移: rear+1, 當(dāng)front == rear

[空]

2)若尾指針rear小于隊(duì)列的最大下標(biāo)maxSize-1芳室,則將數(shù)據(jù)存入rear所指的數(shù)

組元素中,否則無法存入數(shù)據(jù)刹勃。rear == maxSize - 1[隊(duì)列滿]

class ArrayQueue(arrMaxSize: Int) { val

?代碼實(shí)現(xiàn)

maxSize: Int = arrMaxSize

?問題分析并優(yōu)化

val array = new Arryl[nt(arrMaxSize)

var front: Int =-1

1初始化

var rear: Int = -1

val queue = new ArrayQueue(3)|

2. front 是隊(duì)列最前元素[不含]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堪侯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荔仁,更是在濱河造成了極大的恐慌伍宦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乏梁,死亡現(xiàn)場(chǎng)離奇詭異雹拄,居然都是意外死亡裆操,警方通過查閱死者的電腦和手機(jī)芹关,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門锋谐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人质蕉,你說我怎么就攤上這事◆婕。” “怎么了模暗?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長念祭。 經(jīng)常有香客問我兑宇,道長,這世上最難降的妖魔是什么粱坤? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任隶糕,我火速辦了婚禮,結(jié)果婚禮上站玄,老公的妹妹穿的比我還像新娘枚驻。我一直安慰自己,他們只是感情好株旷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布再登。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锉矢。 梳的紋絲不亂的頭發(fā)上梯嗽,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音沽损,去河邊找鬼灯节。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缠俺,可吹牛的內(nèi)容都是我干的显晶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壹士,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼磷雇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躏救,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤唯笙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后盒使,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崩掘,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年少办,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苞慢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡英妓,死狀恐怖挽放,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔓纠,我是刑警寧澤辑畦,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站腿倚,受9級(jí)特大地震影響纯出,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜敷燎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一暂筝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硬贯,春花似錦乖杠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畏吓。三九已至,卻和暖如春卫漫,著一層夾襖步出監(jiān)牢的瞬間菲饼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工列赎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宏悦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓包吝,卻偏偏與公主長得像饼煞,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子诗越,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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