日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素

發布時間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Follow up for "Remove Duplicates":
What if duplicates are allowed at most?twice?

For example,
Given sorted array A =[1,1,1,2,2,3],

Your function should return length =5, and A is now[1,1,2,2,3].

?題意:可以保留一個重復的元素。

思路:第一種是和Remove duplicates from sorted array類似的思想。隔一個比較一次,拿A =[1,1,1,2,2,3]舉例子,其對比的過程如下

?

這里可以將第6行、第10行的2改為3,則至多重復的數字出現三次,代碼為:

1 class Solution 2 { 3 public: 4 int removeDuplicates(int A[], int n) 5 { 6 if(n<=2) return n; 7 int lo=2; 8 for(int i=2;i<n;++i) 9 { 10 if(A[i] !=A[lo-2]) 11 A[lo++]=A[i]; 12 } 13 return lo; 14 } 15 };

方法二:使用計數器,當兩者不相等計數器重置,將A[i]賦值給A[lo]的下一位;相等時但是count不超過2,將A[i]賦值給A[lo]的下一位,其余,僅計數器++,這樣就可以成功將不等的情況后的,出現第二個和A[i]相等的情況時,將其也賦值給前面的元素。

1 class Solution { 2 public: 3 int removeDuplicates(int A[], int n) 4 { 5 int lo=0; 6 int count=0; 7 if(n<3) return n; 8 9 for(int i=1;i<n;i++) 10 { 11 if(A[lo]==A[i]) 12 { 13 count++; 14 if(count<2) 15 A[++lo]=A[i]; 16 } 17 else 18 { 19 A[++lo]=A[i]; 20 count=0; 21 } 22 } 23 return lo+1; 24 } 25 };

?

轉載于:https://www.cnblogs.com/love-yh/p/7103271.html

總結

以上是生活随笔為你收集整理的[Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。