將總數中的這些數字轉換後,事情變得更容易,而不是使用間隔/持續時間。這樣一來,原來的排列變成了這些:
$a = array(4,10);
$b = array(5,10);
$c = array(5,6,10);
然後是合併數組,刪除重複值和排序,只是轉換元件回到區間之前的事。建議的功能的輸出是
array(4,1,1,4)
如預期的那樣。
讚賞功能的任何改進。
$arr[] = array(4,6);
$arr[] = array(5,5);
$arr[] = array(5,1,4);
function findCommonDurations($arr) {
$absolute_result = $result = array();
foreach($arr as $key => $value) {
$temp_arr = array();
$so_far = 0;
foreach($value as $key2 => $value2) {
$temp_arr[] = $value2 + $so_far;
$so_far += $value2;
}
$absolute_result = array_merge($absolute_result, $temp_arr);
}
$absolute_result = array_unique($absolute_result);
sort($absolute_result);
$result[0] = $absolute_result[0];
for ($i = 1, $n = count($absolute_result); $i < $n; $i++) {
$result[] = $absolute_result[$i] - $absolute_result[$i-1];
}
return($result);
}
print_r(findCommonDurations($arr));
...........什麼? – rjdown
我不明白 – user2182349
最終數組應該提供可以按順序組合的元素,以便在原始數組中獲得相同的元素。 $ a中的元素可以通過加入如下$ gca元素來生成:(4,1 + 1 + 4)。 $ b中的元素與(4 + 1,1 + 4)中的元素一樣,$ c中的元素與(4 + 1,1,4)中的元素一樣。請讓我知道我如何澄清我的問題。 – Holokinesis