leetcode:Remove Duplicates from Sorted Array II (允許重複一次,去掉陣列多餘數字)【面試演算法題】
阿新 • • 發佈:2019-02-11
題目:
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]
.
應為允許一個重複,所以判斷就不是相鄰而是相隔一個的數字是否不一樣。
不一樣就需要更新值,但注意到這題更新陣列不能是當前的狀態,而需要是更新前一個不同的數,用temp存當前值以便於下一次賦值。
因為如果更新當前的數,下一次判斷相隔的數是否不同的時候,訪問的就是覆蓋後的陣列值,就不對了。
題解目錄class Solution { public: int removeDuplicates(int A[], int n) { if(n==0)return 0; if(n==1)return 1; int num=1,i,temp=A[1]; for(i=2;i<n;++i) if(A[i]!=A[i-2]) { A[num++]=temp; temp=A[i]; } A[num++]=temp; return num; } }; // blog.csdn.net/havenoidea