LeetCode1089. 复写零

具体思想:

先找到能到达的最大情况,然后反向向后移;

具体代码:

class Solution {
public:
    void duplicateZeros(vector<int>& arr) {
        int i=0,j=0;
        int n=arr.size();
        bool flag=true;
        while(j<n){
            flag=false;
            if(arr[i]==0){
                flag=true;
                if(j+1<n){
                    j++;
                    flag=false;
                }
            }
            i++,j++;
        }
        i--,j--;
        while(i>=0){
            if(arr[i]==0){
                arr[j]=0;
                if(flag){
                    flag=false;
                    i--,j--;
                    continue;
                }
                arr[--j]=0;
            }else{
                arr[j]=arr[i];
            }
            i--,j--;
        }
    }
};

/*
1,2,0,0,1

1,2,0,0,0
*/

你可能感兴趣的:(LeetCode刷题记录,leetcode,算法,数据结构)