
思路:创建一个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);
}
};
本文介绍了一种使用C++编程语言中的vector容器解决LeetCode问题的方法,即在不改变数组大小的情况下,将数组中的所有0元素复制两遍。作者通过创建一个与原数组大小相同的vectordest,并遍历原数组,根据元素值进行相应的操作后,最后交换原数组和dest容器的内容。
629

被折叠的 条评论
为什么被折叠?



