手写常用算法代码1 - 去重

去重算法模板 : 传入的数组长度>0,返回值为去重后的数组长度。
两种情况:

  • 若数组已经排序过,则去重相同元素;
  • 未排序过,则去重相邻相同元素

Code :

int unique(int *arrary, int arraySize)
{
  int i = 0;
  for (int j = 1; j < arraySize; ++j) {
    if (array[i] != array[j]) {
      i++;
      array[i] = array[j];
    }
  }

  return i + 1;
}

解析 : 双指针
不新增内存,在原数组上进行操作得到新数组,指针 i 是新数组标记,指针 j 是对旧数组进行标记处理


采用STL库提供的unqiue/erase函数可以达到同样的效果

nums.erase(unique(nums.begin(), nums.end()), nums.end())

LeetCode相关例题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,390评论 0 13
  • STL部分 1.STL为什么广泛被使用 C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vec...
    杰伦哎呦哎呦阅读 9,777评论 0 9
  • 本文首发于我的个人博客:尾尾部落 排序算法是最经典的算法知识。因为其实现代码短,应该广,在面试中经常会问到排序算法...
    繁著阅读 10,006评论 3 118
  • 数组 记录《剑指offer》中所有关于数组的题目,以及LeetCode中的相似题目 相关题目列表 说明 由于简书...
    wenmingxing阅读 5,381评论 1 12
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,814评论 3 44