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

2019-11-04  本文已影响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相关例题

上一篇 下一篇

猜你喜欢

热点阅读