乙個矩陣中只有0和1兩種值,每個位置都可以和自己的上、下、左、右四個位置相連,如果有一片1連在一起,這個部分叫做乙個島,求乙個矩陣中有多少個島?
public class islands }}
return land;
}public static void g_do(int arr, int row, int line)
arr[row][line] = 2;
g_do(arr, row + 1, line);
g_do(arr, row - 1, line);
g_do(arr, row, line + 1);
g_do(arr, row, line - 1);
}public static void main(string args) ,,,
,,
,, };
system.out.println(islands(m1));
int m2 = ,,,
,,
,, };
system.out.println(islands(m2));
}}
解題思路就是整體是乙個雙迴圈巢狀,按順序遍歷,如果遇到1,進入到g病毒函式中,函式進行瘋狗一樣遞迴查詢周圍有1的島,找到都標記為2。每進乙個g病毒,那麼島數一定是+1。這樣迴圈一遍就得到了島數。
假如說資料量特別大,矩陣特別大,可以使用多工同時處理。將矩陣分成幾個小的版塊,然後每個cpu負責乙個版塊,最後再利用交並集計算邊界,合併一起得到島的個數。
演算法 海量資料
目錄 公共部分 王道程式設計師求職寶典 兩個檔案共同的url hash 分治 頻率最高 王道程式設計師求職寶典 按頻率排序多個檔案中的query記錄 hash 分治 王道程式設計師求職寶典 找出檔案中頻率最高的100個詞 top k hash 分治 中位數 bat面試經典題 100億個整數的中位數 ...
演算法 海量資料處理
在面試中我們會經常遇到和海量資料處理相關的問題,在這裡我們將問題進行乙個彙總,保證將來我們在遇到海量資料相關問題的時候能夠快速解答。改文章參考 如果記憶體能夠全部裝下 直接使用快速排序。如果記憶體不能夠全部裝下 先將第乙個位元組,也就是前8位進行分桶,可以分為256個桶,也就是將100億的整數分別按...
8 22 問題 B 海島爭霸
神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。這是乙個由海洋 島嶼和海盜組成的危險世界。傑克船長準備從自己所占領的島嶼a開始征程,逐個去占領每乙個島嶼。面對危險重重的海洋與詭譎的對手...