Jump to content

barabasz

New Members
  • Posts

    1
  • Joined

  • Last visited

About barabasz

  • Birthday 06/14/1979

Profile Information

  • Gender
    Male
  • Location
    Warsaw, Poland

barabasz's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. AlexWD's solution... function getEquilibriums($arr) { $equilibriums = array(); for($i = 0, $n = sizeof($arr);$i < $n;++$i) { if(array_sum(array_slice($arr, 0, $i)) == array_sum(array_slice($arr, $i + 1))) { $equilibriums[] = $i; } } return $equilibriums; } ...is OK, but array_sum and array_slice functions are slow on very large long sequences. Moreover it's counting same values several times. It's better to use foreach function like in this simple example: function getEquilibriums1($arr) { $right = array_sum($arr); $left = 0; $equilibriums = array(); foreach($arr as $key => $value){ $right -= $value; if(($left) == ($right)) $equilibriums[] = $key; $left += $value; } return $equilibriums; } but the best and IMHO the fastest way is to use for statement: function getEquilibriums2($arr) { $count = count($arr); $left = 0; $right = array_sum($arr); $equilibriums = array(); for ($i = 0; $i < $count; $i++) { $right -= $arr[$i]; if ($left == $right) $equilibriums[] = $i; $left += $arr[$i]; } return $equilibriums; }
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.