PHPで配列から欠落している要素を見つける方法
PHPでは、array_diff 関数を利用することで、配列の中に存在しない(欠落している)要素を簡単に検出できます。この記事では、連続する数値の範囲から欠けている要素を特定するサンプルコードを紹介します。
サンプルコード
<?php
function absent($my_list)
{
$my_array = range(min($my_list), max($my_list));
return array_diff($my_array, $my_list);
}
echo "Elements missing from first array are ";
print_r(absent(array(45, 48, 51, 52, 53, 56)));
echo "Elements missing from second array are ";
print_r(absent(array(99, 101, 104, 105)));
?>
出力結果
Elements missing from first array are Array ( [1] => 46 [2] => 47 [4] => 49 [5] => 50 [9] => 54 [10] => 55 ) Elements missing from second array are Array ( [1] => 100 [3] => 102 [4] => 103 )
コードの解説
まず、absent という名前の関数を定義しています。この関数は以下の手順で動作します。
1. 範囲の生成: min() 関数と max() 関数を使って、引数として渡された配列の最小値と最大値を取得し、range() 関数によってその範囲内のすべての連続した数値を含む新しい配列を生成します。
2. 差分の抽出: array_diff() 関数を使って、生成した完全な配列と元の配列を比較し、元の配列に存在しない要素(=欠落している要素)だけを抽出して返します。
このように、range() と array_diff() を組み合わせることで、数値の連続性が前提となるデータセットから、抜け落ちている要素を効率的かつシンプルに見つけ出すことができます。
-
Pythonで1〜Nの範囲の配列から欠落している4つの数を検索する方法
問題の概要ここでは、1からNまでの範囲に属する相異なる整数で構成された配列を扱います。配列のサイズは N-4 であり、要素の重複は一切ありません。つまり、1からNまでのうち4つの数が配列から抜け落ちていることになります。この記事では、その4つの欠落数を昇順で特定する方法を解説します。例として、入力が A = [2, 8, 4, 13, 6, 11, 9, 5, 10] の場合、出力は [1, 3, 7, 12] となります。アルゴリズムのポイントこの問題は、追加のメモリをほとんど使わずに解決できます。鍵となるのは「符号反転」のテクニックです。配列内の値 v に対応する位置(インデックス v-1
-
PythonでリストからN個の最大要素を取得する方法
整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):