Pythonで配列から特定の値をすべて削除する方法
問題の概要
配列 nums と値 val が与えられたとき、val と等しいすべての要素を配列内でその場で削除し、残りの要素数(新しい長さ)を求めます。
例えば、入力が [0,1,5,5,3,0,4,5]、val が 5 の場合、値 5 は3つ含まれているため、削除後の長さは 5 になります。
解決のアプローチ
この問題は、書き込み位置を示すカウンタを1つ用意することで、追加のメモリを使わずに解決できます。手順は以下の通りです。
- カウント変数
countを 0 で初期化します。 - 配列
numsの各インデックスiに対して次の処理を繰り返します。 nums[i]がvalと等しくない場合は、nums[count]にnums[i]を代入し、countを 1 増やします。- ループ終了後、
countを返します。
この方法では、val 以外の要素だけを配列の先頭側へ順番に詰めていくため、結果として先頭から count 個分の要素が「削除後の配列」となります。
実装例
以下のコードで実際の動作を確認してみましょう。
class Solution: def removeElement(self, nums, val): count = 0 for i in range(len(nums)): if nums[i] != val: nums[count] = nums[i] count += 1 return count ob = Solution() print(ob.removeElement([0,1,5,5,3,0,4,5], 5))
入力
[0,1,5,5,3,0,4,5], 5
出力
5
計算量
時間計算量は O(n)(n は配列の長さ)、空間計算量は O(1) です。配列を一度走査するだけで済み、余分なメモリも不要なため、非常に効率的な手法と言えます。
-
JavaScriptでIDを指定して要素を削除する方法
JavaScriptでIDを指定して要素を削除するIDを使ってHTML要素を削除するには、remove()メソッドを使用します。このメソッドは、対象のDOM要素をドキュメントから直接取り除くことができる、最もシンプルで直感的な方法です。コード例以下は実際のサンプルコードです。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8> <meta name=viewport content=width=device-width, in
-
Python入門:リストから全要素がNoneのタプルを削除する方法
Pythonでは、リスト内包表記とall()関数を組み合わせることで、すべての要素がNoneであるタプルをリストから簡単に削除できます。この記事では、その具体的な実装方法をコード例とともに解説します。 基本的な考え方 ポイントは次の2つです。 all()関数:イテラブル内のすべての要素が条件を満たす場合にTrueを返します。 not演算子:all()の結果を反転させることで、「すべてがNoneではない」タプルだけを残せます。 サンプルコード my_tuple = [(None, 12), (None, None), (33, 54), (32, 13), (None, )] print(