Leetcode27. 要素の除去

1306 ワード

タイトル
配列numsと値valを指定すると、valに等しいすべての数値の要素をその場で除去し、除去後の配列の新しい長さを返す必要があります.
余分な配列空間を使用しないでください.入力配列をその場で変更し、O(1)余分な空間を使用する条件で完了する必要があります.
要素の順序は変更できます.配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.
例1:
   nums = [3,2,2,3], val = 3,

           2,    nums           2。

配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.例2:
   nums = [0,1,2,2,3,0,4,2], val = 2,

           5,    nums          0, 1, 3, 0, 4。

この5つの要素は任意の順序で使用できます.
配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.説明:
なぜ返される数値は整数ですが、出力される答えは配列ですか?
入力配列は「参照」で渡されます.これは、関数で入力配列を変更することが呼び出し元に表示されることを意味します.
内部操作は次のように想像できます.
// nums   “  ”     。    ,         
int len = removeElement(nums, val);

//                    。
//            ,                    。
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

Swift解法
 class Solution {
        func removeElement(_ nums: inout [Int], _ val: Int) -> Int {
            var i = 0
            while i < nums.count {
                if nums[i] == val {
                    nums.remove(at: i)
                } else {
                    i += 1
                }
            }
            return nums.count
        }
}

ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/remove-element