LeetCode除去要素C++版
3467 ワード
タイトルの説明:
配列numsと値valを指定すると、valに等しいすべての数値の要素をその場で除去し、除去後の配列の新しい長さを返す必要があります.
余分な配列空間を使用しないでください.入力配列をその場で変更し、O(1)余分な空間を使用する条件で完了する必要があります.
要素の順序は変更できます.配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.
例1:
例2:
説明:
なぜ返される数値は整数ですが、出力される答えは配列ですか?
入力配列は「参照」で渡されます.これは、関数で入力配列を変更することが呼び出し元に表示されることを意味します.
内部操作は次のように想像できます.
C++コードは以下の通りです.
配列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。
。
説明:
なぜ返される数値は整数ですが、出力される答えは配列ですか?
入力配列は「参照」で渡されます.これは、関数で入力配列を変更することが呼び出し元に表示されることを意味します.
内部操作は次のように想像できます.
// nums “ ” 。 ,
int len = removeElement(nums, val);
// 。
// , 。
for (int i = 0; i < len; i++) {
print(nums[i]);
}
C++コードは以下の通りです.
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int len = nums.size();
int i = 0;
for (int j = 0;j < len;j++){
if (nums[j]!=val){
nums[i] = nums[j];
i++;
}
}
return i;
}
};