当前位置: 首页 > 知识库问答 >
问题:

第三个测试用例PHP for循环不递增

堵宏毅
2023-03-14

给定一个整数数组nums和一个整数目标,返回两个数字的索引,使它们相加到目标。我已经尝试了下面解决方案的几个修改版本。

function twoSum($nums, $target) {
    $arr = array();
    for($i = 0; $i < count($nums); $i++){
        
        if($nums[$i] + $nums[$i+1] == $target){
            array_push($arr, array_search($nums[$i], $nums), array_search($nums[++$i], $nums));
            break;
        }
    }
    return $arr;
}

当通过三个测试用例时,前两个返回正确的结果,最后一个用例返回第一个正确的索引,但最后一个索引(技术上)是不正确的。

使用的测试用例:

>

nums=[3,2,4],目标=6
预期产出:[1,2]
实际产出:[1,2]

nums=[3,3],target=6
预期输出:[0,1]
实际输出:[0,0]

共有1个答案

司马洲
2023-03-14

您的方法不正确,因为您假设两个连续的索引可以导致此行中的目标值,这是不正确的。这一对可以是任何组合。

$nums[$i] + $nums[$i+1] == $target

它也不考虑$i 1的索引出界异常。无论如何,代码的其余部分肯定会朝着不正确的方向发展。

解决这个问题的步骤非常简单。

>

现在,在数组上循环时,如果$set中存在target-current_元素键(另一个数字),则得到该对。

片段:

<?php

function twoSum($nums, $target) {
    $set = [];
    foreach($nums as $index => $curr_element){
        $cousin_value = $target - $curr_element;
        if(isset( $set[ $cousin_value ] )){
            return [  $set[ $cousin_value ], $index ];
        }
        $set[ $curr_element ] = $index;
    }
    return -1;
}

print_r(twoSum([3,3],6));
 类似资料:
  • 简介 既然我们已经了解了 Kali Linux 所包含的工具,现在我们要调查一些真实世界的场景。我们进行的许多攻击都有意在有漏洞的软件和系统上执行。但是,当你使用 Kali 攻击一个系统时,它不可能像我们当前的测试平台那样没有防护。 这一章中,我们会探索一些技巧,来建立起一些真实的测试环境。在当前的信息技术水平中,多数公司都使用平台即服务(PAAS)解决方案,云服务器主机,或者使用小型网络,它们由

  • 测试主页 测试将是一个反复出现的主题,我们将在整个教程系列中一起探讨不同的概念和策略。 我们来开始写第一个测试。现在,我们将在boards应用程序内的tests.py文件中操作 boards/tests.py from django.core.urlresolvers import reverse from django.test import TestCase class HomeTests(

  • 单纯循环 3.1.1 GOTO语句实现循环 循环结构用于实现重复的算法。它是三种基本结构(顺序、选择、循环)之一,具有重复执行某一段语句的功能,因为它以DO作为关键字,所以又称DO构造。在程序中存在两类循环:无条件的循环和有条件的循环。无条件循环是无休止地执行一个程序段,而有条件的循环是在满足一定条件时才执行循环。 F77允许使用GOTO语句来实现转移。GOTO语句的一般形式为:GOTO (语句标

  • 主要内容:1. 录制,2. 回放,3.保存测试套件在本节中,将学习如何在Selenium ide中创建基本测试用例。Selenium IDE中的整个测试脚本创建过程可分为三个步骤: 录制(记录用户与浏览器的交互) 播放(执行录制的脚本) 保存测试套件 现在,我们将学习如何实施上述三个步骤。 1. 录制 启动Firefox浏览器。 单击浏览器右上角的Selenium图标。 它将启动Selenium IDE的默认界面。 记录一个新的测试项目(选择第一

  • 问题内容: 我对此很好奇。 我想检查哪个功能更快,所以我创建了一些代码,执行了很多次。 “第二个”循环更快,因此,我认为hadoop的Bytes类比String类的函数更快。然后,我更改了循环顺序,然后c.getBytes()变得更快。我执行了很多次,结论是,我不知道为什么,但是在执行第一个代码后,我的VM中发生了一些事情,因此第二个循环的结果变得更快。 问题答案: 这是经典的Java基准测试问题

  • 本文向大家介绍MySQL循环语句之while循环测试,包括了MySQL循环语句之while循环测试的使用技巧和注意事项,需要的朋友参考一下 mysql 操作同样有循环语句操作,网上说有3中标准的循环方式: while 循环 、 loop 循环和repeat循环。还有一种非标准的循环: goto。 鉴于goto 语句的跳跃性会造成使用的的思维混乱,所以不建议使用。 这几个循环语句的格式如下: WHI