[Leetcode] Remove duplicates from sorted array ii 从已排序的数组中删除重复元素
生活随笔
收集整理的這篇文章主要介紹了
[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 从已排序的数组中删除重复元素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 001 Servlet 介绍
- 下一篇: swift UI专项训练39 用Swif