【leetcode刷题笔记】02.复写零
题目:
思路:
代码实现
class Solution
{
public:void duplicateZeros(vector<int>& arr) {//1.模拟异地操作int prev=0,cur=0;int len=arr.size();while(cur<len){//arr[prev]不是0就都走一步if(arr[prev]!=0){prev++;cur++;}//arr[prev]是0就prev走一步,cur走两步else{prev++;cur++;cur++;}}//prev停下来的位置就是异地操作最后元素的下一个位置,cur指向数组大小的下一个位置prev--;cur--;//1.5.特殊处理if(cur==len){cur--;arr[cur]=0;cur--;prev--;}//2.倒序复写0操作while(cur>=0){//arr[prev]不是0就都走一步if(arr[prev]!=0){arr[cur]=arr[prev];prev--;cur--;}//arr[prev]是0就prev走一步,cur走两步else{arr[cur]=arr[cur-1]=arr[prev];prev--;cur--;cur--;}}}
};