「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Leetcode デーの削除要素の説明

Leetcode デーの削除要素の説明

2024 年 7 月 30 日に公開
ブラウズ:849

Leetcode Day Remove Element Explained

問題は次のとおりです:

整数配列 nums と整数 val を指定すると、nums in-place 内の val の出現箇所をすべて削除します。要素の順序は変更される場合があります。次に、val. に等しくない要素の

数を nums で返します。

val に等しくない nums 内の要素の数が k であることを考慮します。受け入れられるには、次のことを行う必要があります。

  • 配列 nums を変更して、nums の最初の k 要素に val と等しくない要素が含まれるようにします。 nums の残りの要素は、nums.
  • のサイズと同様に重要ではありません。
  • k を返します。

カスタムジャッジ:

審査員は次のコードを使用してあなたのソリューションをテストします:

int[] nums = [...]; // Input array
int val = ...; // Value to remove
int[] expectedNums = [...]; // The expected answer with correct length.
                            // It is sorted with no values equaling val.

int k = removeElement(nums, val); // Calls your implementation

assert k == expectedNums.length;
sort(nums, 0, k); // Sort the first k elements of nums
for (int i = 0; i 



すべてのアサーションが合格した場合、ソリューションは受け入れられます。

例 1:

Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 2.
It does not matter what you leave beyond the returned k (hence they are underscores).

例 2:

Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_]
Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4.
Note that the five elements can be returned in any order.
It does not matter what you leave beyond the returned k (hence they are underscores).

これが私がそれを解決した方法です:

この問題を解決するために、私は 2 つの主な戦略を使用しました:

  1. インプレース置換: val に等しくない要素を格納する新しい配列を作成する代わりに、同じ配列番号を使用して、削除する必要がある要素を上書きします。
  2. 2 ポインター手法: 1 つのポインター (i) は配列内の各要素を反復処理し、別のポインター (k) は次の非 val 要素が配置される位置を追跡します。
  • まず、ポインター k を初期化し、0 に設定します。これにより、次の非 val 要素が配置される位置が追跡されます。
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:       
    k = 0
  • nums 配列を反復処理します。
  • k を追跡するために、現在の要素 nums[i] が val と異なるかどうかを確認します。
  • そうである場合、要素 nums[i] を k 番目の位置に移動し、k を 1 だけ増分して、次の非 val 要素の位置を更新します。
for i in range(len(nums)):
    if nums[i] != val:
        nums[k] = nums[i]
        k  = 1
  • val と等しくない要素の数である k を返します。
return k

完成したソリューションは次のとおりです:

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        k = 0
        for i in range(len(nums)):
            if nums[i] != val:
                nums[k] = nums[i]
                k  = 1
        return k
リリースステートメント この記事は次の場所に転載されています: https://dev.to/simona-cancian/leetcode-day-8-remove-element-explained-212a?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3