美文网首页
手写常用算法代码1 - 去重

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

作者: 執著我們的執著 | 来源:发表于2019-11-04 21:14 被阅读0次

    去重算法模板 : 传入的数组长度>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相关例题

    相关文章

      网友评论

          本文标题:手写常用算法代码1 - 去重

          本文链接:https://www.haomeiwen.com/subject/pdsumctx.html