44-配列除去要素-leetCode 27(python)


  • タイトル説明
  • 配列numsと値valを指定すると、valに等しいすべての数値の要素をその場で除去し、除去後の配列の新しい長さを返す必要があります.
    余分な配列空間を使用しないでください.入力配列をその場で変更し、O(1)余分な空間を使用する条件で完了する必要があります.
    要素の順序は変更できます.配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.
  • 例1:
    与えられたnums=[3,2,2,3],val=3,
    関数は新しい長さ2を返し、numsの最初の2つの要素は2です.
    配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.例2:
    与えられたnums=[0,1,2,2,3,0,4,2],val=2,
    関数は新しい長さ5を返し、numsの最初の5つの要素は0、1、3、0、4です.
    この5つの要素は任意の順序で使用できます.
    配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.説明:
    なぜ返される数値は整数ですが、出力される答えは配列ですか?
    入力配列は「参照」で渡されます.これは、関数で入力配列を変更することが呼び出し元に表示されることを意味します.
    内部操作は次のように想像できます.
    //numsは「参照」で渡されます.すなわち、int len=removeElement(nums,val)は、実パラメータをコピーしない.
    //関数に入力配列を変更すると、呼び出し元に表示されます.//関数が返す長さに基づいて、配列内の長さ範囲内のすべての要素が印刷されます.for (int i = 0; i < len; i++) {     print(nums[i]); }
  • 解決構想
  • pythonデータ構造におけるlistのpop操作を用いて,配列の最後の要素から前方に遍歴し,削除する要素に遭遇し,popの1つの要素が出てくる.
  • コード
  • class Solution(object):
        def removeElement(self, nums, val):
            """
            :type nums: List[int]
            :type val: int
            :rtype: int
            """
            j=len(nums)
            for i in range(j-1,-1,-1):
                if nums[i]==val:
                    nums.pop(i)    
            return len(nums)