思路:创建一个vector容器dest,容器大小和arr一样,
class Solution {
public:
void duplicateZeros(vector<int>& arr) {
int& cur = arr[0];
//创建一个和arr一样大小的容器
vector<int> dest(arr.size());
//指向dest容器头
vector<int>::iterator it=dest.begin();
for(int i=0;i<arr.size();i++)
{
//看看dest是不是满了,如果满了则跳出循环
if(it==dest.end())
{
break;
}
//如果现在的元素为0
if(arr[i]==0)
{
//把新容器的元素添加0
*it=0;
//往后走一位
it++;
//判断是不是满了
if (it == dest.end()) // 检查是否已经超出目标数组的大小
break;
//没满,再添加
*it=0;
}
//否则直接赋值就可以
else
{
*it=arr[i];
}
it++;
}
//最后的时候交换这两个容器
swap(arr,dest);
}
};