首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP在给定的数字数组中查找缺少的数字

问使用PHP在给定的数字数组中查找缺少的数字
EN

Stack Overflow用户
提问于 2014-03-31 19:13:04
回答 4查看 3.5K关注 0票数 0

我是php的新手,几天前我参加了一次面试,面试官问了一个类似下面的问题。

给定的数组有99个数字,其中包含从1到100的数字,但缺少一个数字。描述两种不同的算法,它们可以为您找到丢失的数字。该算法应针对低存储量和快速处理进行优化。输出应该显示每个算法的执行时间。

我在谷歌上搜索了一下,发现这是面试中常问的一个常见问题。我是这样找到答案的。

代码语言:javascript
复制
int sum = 0;
int idx = -1;
for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 0) {
         idx = i; 
    } else {
         sum += arr[i];
    }
}

// the total sum of numbers between 1 and arr.length.
int total = (arr.length + 1) * arr.length / 2;

System.out.println("missing number is: " + (total - sum) + " at index " + idx);

但是代码不是用php编写的,

你能帮我找出php代码和算法名称吗?这样我就可以在接下来的面试中改进我的答案。

EN

回答 4

Stack Overflow用户

发布于 2014-03-31 19:18:27

在PHP中,您可以很容易地使用一些数组函数来实现这一点。最好的办法是,

代码语言:javascript
复制
$missing = array_diff(range(1,100),$array);

。

票数 9
EN

Stack Overflow用户

发布于 2014-03-31 19:22:36

另一种方法是使用array_sum函数,并且知道所有从1到100的数字相加等于5050。

代码语言:javascript
复制
$missing = 5050-array_sum($array);
票数 1
EN

Stack Overflow用户

发布于 2014-03-31 19:23:18

转换成PHP后,它几乎是一样的。(未测试)

当然,还有更好的方法,比如Rikesh发布的方法,但这正是你想要的:

代码语言:javascript
复制
$sum = 0
$idx = -1
for($i = 0; $i < count($arr); $i++){
   if($arr[$i] == 0){
      $idx = $i;
   }else{
      $sum += $arr[$i];
   }
}

$total = (count($arr) + 1) * (count($arr) / 2);

echo "Missing: " . ($total - $sum) . " at index " . $idx;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22760125

复制
相关文章

相似问题

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