首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >返回最小正整数

返回最小正整数
EN

Stack Overflow用户
提问于 2019-04-02 07:52:00
回答 2查看 417关注 0票数 -2

函数解($A);

在给定N个整数的数组A的情况下,返回在A中不出现的最小正整数(大于0)。

例如,给定A= 1,3,6,4,1,2,函数应返回5。

给定A= 1,2,3,函数应返回4。

给定A=−1,−3,函数应返回1。

为以下假设编写一个有效的算法:

代码语言:javascript
复制
    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].

下面是我的尝试:

代码语言:javascript
复制
function solution($A) {
    // write your code in PHP7.0
    $n=1;

    while($n > 0  && $n <= 1000000)

    $n ++;
    echo $A=$n+1;
}

echo solution;
?>```
EN

回答 2

Stack Overflow用户

发布于 2019-04-02 09:59:11

试试这个,不需要循环:

代码语言:javascript
复制
<?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

https://3v4l.org/h28LZ

票数 2
EN

Stack Overflow用户

发布于 2019-04-02 10:15:36

下面是一句话,要么给你的教授留下深刻印象,要么因为没有遵循说明而被踢出班级:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55465066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档