Учитывая массив nums, напишите функцию, чтобы переместить все 0 в конец его, сохраняя относительный порядок ненулевых элементов
Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
Пример:
Input: [0,1,0,3,12] Output: [1,3,12,0,0]
Что я уже пробовал:
class Solution { public: void moveZeroes(vector<int>& nums) { int count=0; for(int i=0;i<nums.size();i++) { if(nums[i]==0) { nums.erase(nums.begin()+i); ++count; //This is to count number of zeroes. } } for(int i=0;i<count;i++) nums.push_back(0); //To input zero at the end of the vector count times. } };
Этот код показывает правильный вывод для входного сигнала :
[0,1,0,3,12]
но неправильный вывод для ввода:
[0,0,1].
Для ввода,
[0,0,1]это показывает
[0,1,0]- Так и должно быть
[1,0,0]