函数解($A);
在给定N个整数的数组A的情况下,返回在A中不出现的最小正整数(大于0)。
例如,给定A= 1,3,6,4,1,2,函数应返回5。
给定A= 1,2,3,函数应返回4。
给定A=−1,−3,函数应返回1。
为以下假设编写一个有效的算法:
N is an integer within the range [1..100,000];
each element of array A is an integer within the range [−1,000,000..1,000,000].
下面是我的尝试:
function solution($A) {
// write your code in PHP7.0
$n=1;
while($n > 0 && $n <= 1000000)
$n ++;
echo $A=$n+1;
}
echo solution;
?>```
发布于 2019-04-02 09:59:11
试试这个,不需要循环:
<?php
function solution($set) {
$diff = array_diff(range(1, max($set)), $set);
sort($diff);
return !isset($diff[0]) ? max($set) + 1 : ($diff[0] < 1 ? 1 : $diff[0]);
}
echo solution([39, 68, 47, 2, 19, 64]); // 1
echo solution([1, 3, 6, 4, 1, 2]); // 5
echo solution([1, 2, 3]); // 4
echo solution([-1, -3]); // 1
发布于 2019-04-02 10:15:36
下面是一句话,要么给你的教授留下深刻印象,要么因为没有遵循说明而被踢出班级:
php > function solution(array $A) { return max(array(1,min(array_diff(range(1,100000),$A)))); }
php > echo solution([39, 68, 47, 2, 19, 64]);
1
php > echo solution([1,3,6,4,1,2]);
5
php > echo solution([-1,-3]);
1
php > echo solution([1,2,3]);
4
它生成数组N (1-1,000,000)并对输入A运行array_diff,然后返回比较结果中最小的一个,如果结果小于或等于0,则返回1。
https://stackoverflow.com/questions/55465066
复制相似问题