【发布时间】:2017-09-27 19:04:47
【问题描述】:
写一个函数:
函数解($A);
给定一个包含 N 个整数的数组 A,返回在 A 中没有出现的最小正整数(大于 0)。
例如,给定 A = [1, 3, 6, 4, 1, 2],函数应该返回 5。
再举一个例子,给定 A = [1, 2, 3],函数应该返回 4。
给定 A = [−1, −3],函数应该返回 1。
假设:
N 是 [1..100,000] 范围内的整数; 数组 A 的每个元素都是 [−1,000,000..1,000,000] 范围内的整数。 复杂性:
预期的最坏情况时间复杂度为 O(N); 预期的最坏情况空间复杂度为 O(N),超出输入存储(不计算输入参数所需的存储)。 可以修改输入数组的元素。
我的尝试:
function solution($A) {
$b=min($A);
$c=max($A);
for($i=$b; $i<=$c;$i++){
if($b>0){
if($b!=1){
return 1;
}else{
for($x=1;$x<=$c;$x++){
$b=1;
$b=$b+$x;
if(!in_array($b,$A)){
return $b;
}
}
}
}else if($b<0 && $c<0){
return 1;
}else if($b<0 && $c>0){
//was working on this case..
}
//echo $test.'<br>';
}
}
根据结果,这次尝试的正确率是 40%。
【问题讨论】:
-
您确定要寻找最小的正整数吗?你的结果没有告诉你的要求,请检查这些例如,给定 A = [1, 3, 6, 4, 1, 2],函数应该返回 5。另一个例子,给定 A = [1, 2, 3] ,函数应该返回 4。给定 A = [−1, −3],函数应该返回 1。
-
对于数组的不同情况,函数必须返回不属于该数组的最小可能整数。 @MoeenBasra
-
['−1', '−3',4,'-5'] 的输出应该是什么?
-
1,因为我们正在寻找最小的正整数,并且 ans 不应该等于 0。@RavinderReddy
-
从1开始,在数组中吗?是-> 加 1 并重复。不->这就是你的答案。