タイトルの説明:
numの値とvalの値を与えるには、valに等しい値を持つすべての要素を削除し、削除後に配列の新しい長さを返す必要があります。
余分な配列スペースを使用しないでください。使用できるのはO(1)の余分なスペースのみで、入力配列を適切に変更する必要があります。
要素の順序は変更できます。新しい長さを超えて配列の要素を考慮する必要はありません。
私の解決策:
重複する要素を削除するという前の質問と同様に、2ポインターのDafa
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int dis=0;
for(int i=0;i<nums.size();i++){
if(nums[i]==val) dis++;
else nums[i-dis]=nums[i];
}
return nums.size()-dis;
}
};