目录
- 一、题目解析
- 二、算法原理
- 三、代码实现
一、题目解析
二、算法原理
三、代码实现
class Solution {
public:
void duplicateZeros(vector<int>& arr)
{
//找出最后一个数
int dest=-1,cur=0;
for(;;cur++)
{
if(arr[cur])
{
dest++;
}
else
{
dest+=2;
}
if(dest>=arr.size()-1)
{
break;
}
}
if(dest>arr.size()-1)
{
dest=arr.size()-1;
arr[dest]=0;
dest--;
cur--;
}
for(int i=dest;i>=0;i--)
{
if(arr[cur])
{
arr[i]=arr[cur--];
}
else
{
arr[i]=0;
arr[i-1]=0;
i--;
cur--;
}
}
}
};