-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathFindPivotIndex.php
59 lines (50 loc) · 1.24 KB
/
FindPivotIndex.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
declare(strict_types=1);
namespace leetcode;
class FindPivotIndex
{
public static function pivotIndex(array $nums): int
{
if (empty($nums)) {
return 0;
}
[$left, $right] = [0, array_sum($nums)];
foreach ($nums as $key => $num) {
$right -= $num;
if ($left === $right) {
return $key;
}
$left += $num;
}
return -1;
}
public static function pivotIndex2(array $nums): int
{
if (empty($nums)) {
return 0;
}
[$n, $sum, $total] = [count($nums), 0, array_sum($nums)];
for ($i = 0; $i < $n; $sum += $nums[$i++]) {
if ($sum * 2 === $total - $nums[$i]) {
return $i;
}
}
return -1;
}
public static function pivotIndex3(array $nums): int
{
if (empty($nums)) {
return 0;
}
[$n, $sum, $total] = [count($nums), 0, array_sum($nums)];
for ($i = 0; $i < $n; $i++) {
if ($i !== 0) {
$sum += $nums[$i - 1];
}
if ($total - $sum - $nums[$i] === $sum) {
return $i;
}
}
return -1;
}
}