2014-06-09 33 views
0

我有結構blook樹 - >house - >room
每個房間都有一些數據和特定狀態redblue,​​,empty計算最多重複元素的算法;

我必須遍歷樹並在每個level上顯示最常見的顏色。

是否有類似於BinaryMask的算法爲每種顏色分配一個數值, 並將「sum」存儲爲單個整數,並且隨時可以從總和中提取最常見的顏色?

(如果有的顏色具有相同的罪名優先red > blue > green取)

+0

爲什麼不使用三個整數?將所有內容封裝到一個單詞中的額外開銷可能會讓這個速度變慢,並且只有三分之一的位可用於存儲計數。 –

+1

你的樹究竟是如何定義的?這是一個多維數組還是使用對象?如果前者,那麼array_column()和array_count_values()的組合可能是最簡單的解決方案 –

+0

該樹來自數組。 –

回答

1

使用一個數組... 這樣,

$colors = Array('red' => 0, 'blue' => 0, 'green' => 0, 'empty' => 0); 
//assign values 
$colors['red'] += 1; 
//get maximun 
array_keys($colors, max($colors))