赞
踩
从后往前写,首先开个计数的,遍历数组,遇到0了,计数的指针就走两个,一直走到最后算结束
然后从最后开始往前写,每次如果i
位置不是0就直接写回去,如果是0就放两个0,一直写到i
回到最开头,然后break掉
class Solution { public: void duplicateZeros(vector<int>& arr) { int n = arr.size(), cnt = 0; arr.push_back(0); for(int i = 0; i < n; i ++){ if(arr[i]) cnt ++; else cnt += 2; if(cnt >= n){ for(int j = cnt - 1; i >= 0; i --){ if(arr[i]) arr[j --] = arr[i]; else{ arr[j --] = 0; arr[j --] = 0; } } break; } } arr.pop_back(); } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。