<?phpclass Solution { /** * 缺失的第一个正数 * 输入: [3,4,-1,1] * 输出: 2 * * 输入: [7,8,9,11,12] * 输出: 1 * @param Integer[] $nums * @return Integer */ function firstMissingPositive($nums) { if (!$nums) return 1; // $nums[$k - 1] = $k; foreach ($nums as $k => $v) { while ($v > 0 && $nums[$nums[$k] - 1] != $nums[$k]) { $tmp = $nums[$nums[$k] - 1]; $nums[$nums[$k] - 1] = $nums[$k]; $nums[$k] = $tmp; } } foreach ($nums as $k => $v) { if ($v === null) { return $nums[$k] + 1; } } return end($nums) + 1; }}// $nums = [3,4,-1,1];$nums = [7,8,9,11,12];$cls = new Solution();$r = $cls->firstMissingPositive($nums);echo $r;