kaki-epithesi@home:~$

30 Days of Code [Day 27]

QUESTION : 283. Move Zeroes

#define vi vector<int>
#define pii pair<int, int>
#define pb push_back
#define mp make_pair
#define all(v) v.begin(), v.end()
#define fo(i,s,n) for(int i=s;i<n;++i)
#define of(i,s,n) for(int i=s-1;i>=n;--i)
#define fv(V) for( auto &it : V )
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        fastio;
        int n = nums.size();
        int fz = n;
        fo(i,0,n){
            if(!nums[i]){
                fz = i;
                break;
            }
        }
        if(fz == n) return;
        int zp = fz;
        int nzp = fz+1;
        
        while(nzp < n){
            if(nums[nzp] != 0){
                nums[zp] = nums[nzp];
                nums[nzp] = 0;
                nzp++;
                zp++;
            }
            else{
                nzp++;
            }
        }
    }
};