快排+双指针去重

  1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. int cmp(const void*a,const void*b)
  5. {
  6. return (*(int*)a-*(int*)b);
  7. }
  8. int Deduplication(int*nums,int len)
  9. {
  10. int fast = 0, high = 1;
  11. for (high = 1; high <len; ++high)
  12. {
  13. if (nums[high] != nums[fast])
  14. {
  15. nums[++fast] = nums[high];
  16. }
  17. }
  18. return fast + 1;
  19. }
  20. int main()
  21. {
  22. int n;
  23. cin >> n;
  24. int * nums = new int [n];
  25. for (int i = 0; i < n; i++)
  26. {
  27. cin >> nums[i];
  28. }
  29. qsort(nums,n,sizeof(int),cmp);
  30. int size = Deduplication(nums,n);
  31. for (int i = 0; i < size; i++)
  32. {
  33. cout << nums[i] << ' ';
  34. }
  35. return 0;
  36. }
点赞(0)
 

0 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论