检查数组中是否存在N的两倍等于M的元素
P粉663883862
P粉663883862 2023-09-11 13:15:10
[PHP讨论组]

我开始在leetcode上解决问题,这个问题没有通过测试用例,这是我的尝试:

function checkIfExist($arr) {
    
    $i = 0;
    $j = 0;
    $n = count($arr);
    
    // 循环遍历数组
    for($i; $i < $n; $i++) {
        for($j; $j < $n; $j++) {    
            // 检查元素i和j是否不相同且N*2 = M
            if ($i != $j && $arr[$i] * 2 == $arr[$j]) {
                return true;
            }
        }
    }
    return false;
}

请问可以解释一下我在这里犯了什么错误吗?

P粉663883862
P粉663883862

全部回复(2)
P粉116654495

这应该可以工作,尝试一下这个(它就像其中一种排序算法)。这很奇怪,因为唯一的区别是$i$j的初始化。

function checkIfExist($arr) {
    
    $n = count($arr);
    
    // 遍历数组
    for($i = 0; $i < $n - 1; $i++) {
        for($j = $i + 1; $j < $n; $j++) {    
            // 检查i和j的元素是否不相同且N*2 = M
            if ($i != $j && $arr[$i] * 2 == $arr[$j]) {
                return true;
            }
        }
    }
    return false;
}
P粉323050780

在for循环中,$j和$i指针的初始化完成了工作

function checkIfExist($arr) {
    
        $n = count($arr);
    
        // 循环遍历数组
        for($i = 0; $i < $n; $i++) {
            for($j = 0; $j < $n; $j++) {    
                // 检查i和j元素是否不相同且N*2 = M
                if ($i != $j && $arr[$i] * 2 == $arr[$j]) {
                    return true;
                }
            }
        }
        return false;
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号