2014-03-14 58 views
1

問題來自面試。有一個整數NxN矩陣,N可能在10^4以上。問題是如何設計一個輔助數據結構來有效地得到N×N矩陣的任何子矩形矩陣的最小公倍數。使用的空間不應該超過2xNxN或3xNxN,我不記得它清楚,但我們不要太嚴格限制空間。設計數據結構以有效查詢子矩陣的最小公倍數

+0

根本不清楚* 2xNxN *應該是什麼意思 –

+0

@NiklasB。 2x(原始空間) – Frazer

+0

一個範圍樹(如果你願意的話,2D分割樹)可以做到這一點。這並不簡單,但我不能想象他們會希望有人在不知道的情況下提出這個問題 –

回答

2

我認爲Segment tree會有所幫助。讓我們考慮一個更容易的問題,在那裏給出一個數組A[N]N整數,比查詢任何子數組的最小公倍數。使用分段樹,將每個節點[l, r]與最小公倍數相關聯。每個查詢常量 O(lnN)時間和總空間大約是2*N

對於矩陣,使用2維分段樹。以下是query gcd in matrix的解決方案,與您的問題類似。