問題は次のとおりです:
整数配列 nums と整数 val を指定すると、nums 内のすべての val がインプレースで削除されます。要素の順序は変更される場合があります。次に、val.
に等しくない nums 内の要素の数を返します。val に等しくない 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 < actualLength; i++) { assert nums[i] == expectedNums[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 つの主な戦略を使用しました:
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
完成したソリューションは次のとおりです:
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
以上がLeetcode デーの削除要素の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。