Leetcode 283. 移动零
思路
遍历数组,设置一个计数器(用来统计当前零的个数),若是遇到零,则计数器加一并跳过;若是非零元素,则向前移动计数器个位置,最后将剩下的空位都补上零。
代码
void moveZeroes(vector<int>& nums) {
int count = 0; //记录当前零的个数
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) count++;
else nums[i - count] = nums[i]; //非零,向前移动count个位置
}
while (count) { //剩下的空位都补上零
nums[nums.size() - count] = 0;
count--;
}
}
总结
这道题比较简单,看leetcode上的评论好像有开销更小的方法。