Rumah  >  Soal Jawab  >  teks badan

Semak sama ada terdapat elemen dalam tatasusunan yang dua kali N sama dengan M

Saya mula menyelesaikan masalah pada leetcode dan masalah ini tidak melepasi kes ujian, inilah percubaan saya:

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;
}

Boleh tolong jelaskan apa kesilapan yang saya buat di sini?

P粉663883862P粉663883862377 hari yang lalu451

membalas semua(2)saya akan balas

  • P粉116654495

    P粉1166544952023-09-12 10:25:48

    Ini sepatutnya berfungsi, cuba ini (ia seperti salah satu algoritma pengisihan itu). Ini pelik kerana satu-satunya perbezaan adalah permulaan $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;
    }
    

    balas
    0
  • P粉323050780

    P粉3230507802023-09-12 00:14:39

    Dalam gelung for, pemulaan penuding $j dan $i berfungsi

    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;
        }

    balas
    0
  • Batalbalas