有序数组去重问题
一、有序數組去重問題
1.注意此時的數組是有序的;
2.unique函數屬于STL中比較常用的函數,它的功能是元素去重,即“刪除”序列中所有相鄰元素的重復元素。此處的刪除,并不是真正的刪除,而是指重復元素的位置被不重復的元素給占領了。由于是它刪除的是相鄰的重復元素,所以在使用前,一般都會對目標序列進行排序;
3.unique函數返回的是對于數組而言為,去重后最后一個元素的指針,而其他容器則是返回去重后最后一個元素的迭代器;
4.快慢指針的使用;
二、兩種方法實現
1.
2.快慢指針的使用:
class Solution{ public:int removeDuplicates(int* nums,int count){int i,j;i=0;j=1;for(j=1;j<count;j++){if(nums[j]!=nums[i]){i++;nums[i]=nums[j];}}return i+1;}} int main() {Solution answer;int nums[10]={1,2,2,3,4,5,6,7,8,9};int k=answer.removeDuplicates(nums, 10);printf("%d\n", k);for (int i = 0; i < k; i++) {printf("%d,", nums[i]);}system("pause");return 0;}``` 總結
- 上一篇: 给定一个32位有符号整数,将整数中的数字
- 下一篇: 有序数组求和问题(Two Sum II