2022年11月22日 星期二

[80] Remove Duplicates from Sorted Array II

竟然一次 AC medium的題目,我的眼淚都要噴出乃惹~~~~
似夫有加速的方式~用一個source 的index 跟target 的index (咦不是同一個array嗎XD)
彷彿雙刀俠的概念?!(好啦two pointers)
然後一路檢查目前要決定要不要寫入的這個值, 和index-2 的值一不一樣?!
因為array是非遞減(non-decreasing order )並只能最多重覆兩次
所以檢查index-2的值就足夠了!若是已經重覆第三個以上, 那麼就不寫入. 
最後就是回傳新的numsSize 囉
int removeDuplicates(int* nums, int numsSize){
int count=1;
int target=nums[0];
int index=1;
for (int i=1;i<numsSize;i++)
{
if (target!=nums[i]) //new
{
target=nums[i];
count=1;
nums[index++]=nums[i];

}
else if ((target==nums[i]) && (count<2))
{
count++;
nums[index++]=nums[i];
}
else
{
count++;
}
}
return index;
}

沒有留言:

張貼留言