php - 如何使用 PHP 解决此代码测试?
问题描述
我第一次进行代码测试,30分钟没有解决这个问题。请您给我一个解决此代码测试的答案吗?
写一个函数:
function solution($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]
。
解决方案
我确信有一种更有效的方法来完成它,但这里有一些东西可以让你继续前进。它仍然会循环多达 100,000 次,这是相当多的。
function solution($array) {
$i = 1;
while (in_array($i, $array)) $i++;
return $i;
}
编辑:这是一个更优化的解决方案,不使用in_array
:
function solution($array) {
// sort from smallest to largest
sort($array);
// try to find a positive break in the sequence
$last = 0;
if (end($array) > 0) {
foreach ($array as $current) {
if ($current == $last) continue; // duplicate
if ($current != $last + 1 && $current > 0) break;
$last = $current;
}
}
return $last + 1;
}
推荐阅读
- gradle - How to add a dependency to build.gradle.kts for kotlin-multiplatform (kotlin 1.3.50)?
- mysql - sql get min of subgroup within group for each subgroup on 1 row
- c++ - 如何为 QLineSeries/QXYSeries 设置自定义点标签格式?
- javascript - 用 graalVM 替换 nashorn
- node.js - 将数组值附加到 csv
- windows - 获取域控制器中成员服务器中本地帐户的登录失败事件
- python - Fill pandas row based on iterator matching value in another table
- android - 如何更改android底部导航中特定项目的背景颜色?
- awk - AWK complains about number of fields when extracting variables
- java - How to use a custom functional interface with a method taking 2 arguments in an ArrayList?