1. <?php
    2. class Solution {
    3. /**
    4. * 缺失的第一个正数
    5. * 输入: [3,4,-1,1]
    6. * 输出: 2
    7. *
    8. * 输入: [7,8,9,11,12]
    9. * 输出: 1
    10. * @param Integer[] $nums
    11. * @return Integer
    12. */
    13. function firstMissingPositive($nums) {
    14. if (!$nums) return 1;
    15. // $nums[$k - 1] = $k;
    16. foreach ($nums as $k => $v) {
    17. while ($v > 0 && $nums[$nums[$k] - 1] != $nums[$k]) {
    18. $tmp = $nums[$nums[$k] - 1];
    19. $nums[$nums[$k] - 1] = $nums[$k];
    20. $nums[$k] = $tmp;
    21. }
    22. }
    23. foreach ($nums as $k => $v) {
    24. if ($v === null) {
    25. return $nums[$k] + 1;
    26. }
    27. }
    28. return end($nums) + 1;
    29. }
    30. }
    31. // $nums = [3,4,-1,1];
    32. $nums = [7,8,9,11,12];
    33. $cls = new Solution();
    34. $r = $cls->firstMissingPositive($nums);
    35. echo $r;