func longestObstacleCourseAtEachPositionobstacles int int ans = makeint lenobstacles dp = int for i v = range obstacles p = sortSearchIntsdp v+1 if p lendp dpp = v else dp = appenddp v
function longestObstacleCourseAtEachPosition($obstacles) { $ans = array(); $dp = array(); for ($i = 0; $i < count($obstacles); $i++) { $v = $obstacles[$i]; $p = binarySearch($dp, $v+1); if ($p < count($dp)) { $dp[$p] = $v; } else { $dp[] = $v; } $ans[] = $p + 1; } return $ans; }
function binarySearch($arr, $target) { $left = 0; $right = count($arr) - 1; while ($left <= $right) { $mid = $left + floor(($right - $left) / 2); if ($arr[$mid] <= $target) { $left = $mid + 1; } else { $right = $mid - 1; } } return $left;
原文地址: http://www.cveoy.top/t/topic/iSPt 著作权归作者所有。请勿转载和采集!