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

埃里卡代码

给定一个整数数组 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;
}

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

使用的测试用例:

  1. nums = [2,7,11,15], target = 9
    预期输出:[0,1]
    实际输出:[0,1]

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

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

nice_dev

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

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

它也不考虑$i + 1. 无论如何,其余的代码肯定会朝着错误的方向发展。


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

  • 使用一个简单的关联数组,比如$set将键存储为数组元素,将值存储为数组中该元素的索引。

  • 现在,当循环遍历数组时,如果target - current_elementkey(另一个数字)存在于 中$set,你就得到了一对。

片段:

<?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));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PHP的第三个结果后插入图像

Apache HttpClient 不执行第三个请求

第三个数字的简单while循环

循环卡在第三个索引上

如何为第三个值创建循环?

如何使用python函数使用输入来循环数字和递增或递减第三个数字

PHP将2个数组合并为第三个数组

使用PHP从字符串中的第三个单词开始进行匹配

将两个数组 php 与第三个数组进行比较

在 php 中每第三个结果后显示横幅广告图片

PHP if else 语句的第三个分支无法正常工作

不建议将编码作为第三个参数传递。使用明确的零偏移

has_many:通过不创建我的第三个模型

为什么我的foreach循环会自动跳到集合中的第三个值?

在表之间循环以在 SAS 中创建第三个表

在 Python 中使用循环中的三个函数,其中第三个的输出是所有三个的新输入

为什么前两个变量 (a, b) 是预先递增的,而第三个变量不是 (c)?

循环三个php数组

调用第三个会话变量(PHP 5)后丢失前两个会话变量

当连接三个表时,MySQL不返回任何内容。两个表在第三个表中具有外键。怎么了?

PHP - 如何在第三个空格字符之前获取所有字符串

无法在php / mysql中加入第三个表来获取用户名

For循环遍历列表中的前两个项目,然后在第三个项目上出现Tracback错误

如何使用循环和索引从两个现有向量创建第三个向量?

我在C中的(char *)元素数组上有三个循环。为什么第三个失败?

我不了解inflate方法的第三个参数的true与false之间的主要区别

我为什么不能在Java的for循环的第三个参数中使用?:运算符?

通过 php 循环自动递增

PHP While循环以递增变量