1. <?php
    2. class Solution {
    3. public function threeSum($nums) {
    4. if (!$nums) return [];
    5. sort($nums);
    6. $ret = [];
    7. $count = count($nums);
    8. for ($i = 0; $i < $count - 2; $i++) {
    9. echo $i. '';
    10. if ($i > 0 && $nums[$i] == $nums[$i - 1]) continue;
    11. $left = $i + 1;
    12. $right = $count - 1;
    13. $need = 0 - $nums[$i];
    14. while($left < $right) {
    15. if ($nums[$left] + $nums[$right] == $need) {
    16. array_push($ret, [$nums[$i], $nums[$left], $nums[$right]]);
    17. while($left < $right && $nums[$left] == $nums[$left + 1]) $left++;
    18. while($left < $right && $nums[$right] == $nums[$right - 1]) $right--;
    19. $left++;
    20. $right--;
    21. } else if ($nums[$left] + $nums[$right] > $need) {
    22. $right--;
    23. } else {
    24. $left++;
    25. }
    26. }
    27. }
    28. return $ret;
    29. }
    30. }
    31. $nums = [-1, 1, 0, -1, 2, -4, 5, 6, -11];
    32. $cls = new Solution();
    33. $r = $cls->threeSum($nums);
    34. print_r($r);