當乙個陣列中大部分元素為0,或者為同乙個值的陣列時,可以使用稀疏陣列來儲存該陣列。
稀疏陣列的處理方法是:
1)記錄陣列一共有 幾行幾列,有多少個不同的值
2)把具有不同值的元素的行列及值記錄在乙個小規模的陣列中,從而縮小程式的規模
1.遍歷原始的二維陣列,得到有效資料的個數sum
2.根據sum就可以建立稀疏陣列sparsearr int[sum+1] [3]
3.將二維陣列的有效資料資料存入到稀疏陣列
1.先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列,比如上面的chessarr2= int[11][11]
2.在讀取稀疏陣列後幾行的資料,並賦給原始的二維陣列即可.
package com.atguigu.sparsearray;
public class sparsearray
system.out.println();
}//將二維陣列轉稀疏陣列的思想
//1.先遍歷二維陣列,得到非零資料的個數
int sum =0;
for (int i = 0; i < 11; i++) }}
system.out.println("sum"+sum);
//2.建立對應的稀疏陣列
int sparsearr =new int [sum +1][3];
//給稀疏陣列賦值
sparsearr[0][0]=11;
sparsearr[0][1]=11;
sparsearr[0][2]=sum;
//遍歷二維陣列,將非零值存放到sparsearr中
int count =0;//count 用於記錄是第幾個非零數值
for (int i = 0; i < 11; i++) }}
//輸出稀疏陣列的形式
system.out.println();
system.out.println("得到的稀疏陣列為");
for (int i = 0; i < sparsearr.length; i++)
system.out.println();
//將稀疏陣列恢復為原始二維陣列
//1.先讀取稀疏陣列的第一行,根據第一行的資料,建立原始的二維陣列
int chessarr2 = new int[sparsearr[0][0]][sparsearr[0][1]];
//2.在讀取稀疏陣列後幾行的資料,並賦給原始的二維陣列即可.
for (int i = 1; i < sparsearr.length; i++)
//輸出恢復後的二維陣列
system.out.println();
system.out.println("恢復後的二維陣列");
for(int row :chessarr2)
system.out.println();}}
}
演算法Day3 3個數之和最接近
給定n個整數的乙個陣列s,在s中找出3個數,其加和最接近乙個給定的數target,返回這3個數的和。可以假設每一次輸入都只有乙個解決方案。例如,給定陣列 s 並且target 1。最接近target的和是 2 1 2 1 2 本題又是第二天題 3個數之和 問題的拓展,解法和第二題類似,唯一的區別是在...
day33 建立程序的方法和相關操作
方法一 multiprocess不是乙個模組而是python中乙個操作 管理程序的包。之所以叫multi是取自multiple的多功能的意思,在這個包中幾乎包含了和程序有關的所有子模組。由於提供的子模組非常多,為了方便大家歸類記憶,我將這部分大致分為四個部分 建立程序部分,程序同步部分,程序池部分,...
day33 重建二叉樹(遞迴)
問題描述 輸入一棵二叉樹前序遍歷和中序遍歷的結果,請重建該二叉樹。注意 樣例 解決問題的關鍵是如何根據中序遍歷和前序遍歷還原出二叉樹的結構,學習資料結構的時候,這樣類似的題目我們也是做過的。前序遍歷第乙個節點是root節點,之後根據該節點找到在中序遍歷中的位置,那麼該位置左右分別是這個二叉樹的左右子...