Dalam pembangunan PHP, selalunya perlu mencari nombor terputus dalam urutan nombor. Bagaimana untuk merealisasikan keperluan ini dengan cepat dan cekap? Artikel ini akan menerangkannya kepada anda secara terperinci.
1. Latar belakang masalah
Cari nombor terputus dalam urutan nombor, iaitu, cari nombor yang mempunyai selang tertentu dari nombor seterusnya selepas nombor tertentu. Sebagai contoh, diberi urutan [1, 2, 6, 7, 9, 12, 15, 17] dan diminta untuk mencari nombor tak selanjar, dengan mengandaikan selang ialah 4, nilai pulangan ialah [2, 9, 17].
2. Analisis Masalah
Untuk mencapai keperluan ini, kita perlu melintasi keseluruhan urutan nombor dan melakukan pemprosesan berikut untuk setiap nombor:
Dalam pelaksanaan khusus, kaedah berikut boleh digunakan:
Lintas urutan nombor dan proses setiap nombor.
function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; foreach ($nums as $num) { if (!is_null($previous) && $num - $previous == $interval) { $result[] = $num; } $previous = $num; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
Pelaksanaan di atas sudah boleh memenuhi keperluan, tetapi ia mungkin tidak berfungsi. dalam penggunaan sebenar Tidak cekap. Pertimbangkan pengoptimuman berikut:
Apabila nombor telah direkodkan sebagai nombor terputus, nombor berikut tidak boleh berterusan dengannya, jadi $previous boleh ditetapkan kepada nombor tak selanjar ini sebelum pemprosesan seterusnya .function findDiscontinuousNumbers($nums, $interval) { $result = []; $previous = null; $last_discontinuous_index = null; // 上一次不连续数字的索引位置 for ($i = 0; $i < count($nums); ) { if (!is_null($previous)) { if ($nums[$i] - $previous == $interval) { $result[] = $nums[$i]; } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } } else { $previous = $nums[$i]; $last_discontinuous_index = $i; } $i += ($i == $last_discontinuous_index + 1) ? 1 : $interval; } return $result; } $nums = [1, 2, 6, 7, 9, 12, 15, 17]; $interval = 4; $result = findDiscontinuousNumbers($nums, $interval); print_r($result);
Artikel ini memperkenalkan secara ringkas kaedah mencari nombor terputus dalam PHP dan memberikan asas. pelaksanaan sudah keluar. Dalam penggunaan sebenar, kaedah pelaksanaan yang sesuai dan langkah pengoptimuman harus dipilih mengikut keperluan yang berbeza untuk mencapai prestasi dan kesan yang lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk mencari nombor tidak berturut-turut dalam urutan nombor dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!