[力扣_26] 删除排序数组中的重复项

题目入口:点击进入

相关算法:

  • 原地算法——时间复杂度O(n),空间复杂度——O(1)

思路和算法:

这题其实在纸上简单画画就可以得出解法,题目要求删除重复出现的元素并且返回删除后的长度,就可以想到快慢指针的思想,初始化两指针全部指向下标为0的元素

  • 若元素相等,则快指针前进
  • 若元素不相等,则满指针往前走一步然后等于快指针所指的不相等的元素。

图示如下:

image-20210119025057459

代码如下所示:

int removeDuplicates(int* nums, int numsSize){
  if(!numsSize) return 0;
  int i=0,j=0;
  while(j<numsSize)
  {
    if(nums[i]==nums[j]) j++;
    else nums[++i]=nums[j];
  }
  return i+1;
}

本文链接:

https://nullcode.fun/73.html
1 + 2 =
快来做第一个评论的人吧~