26.删除有序数组中的重复项
链接:26.删除有序数组中的重复项
难度:Easy
标签:数组、双指针
简介:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
题解 1 - typescript
- 编辑时间:2021-04-18
- 执行用时:88ms
- 内存消耗:41.3MB
- 编程语言:typescript
- 解法介绍:快慢指针。
function removeDuplicates(nums: number[]): number {
  const len = nums.length;
  if (len === 0 || len === 1) return len;
  let slow = 0;
  let fast = 1;
  while (fast < len) {
    if (nums[slow] !== nums[fast]) nums[++slow] = nums[fast];
    fast++;
  }
  return slow + 1;
}
题解 2 - cpp
- 编辑时间:2021-12-20
- 执行用时:12ms
- 内存消耗:18MB
- 编程语言:cpp
- 解法介绍:双指针。
class Solution {
   public:
    int removeDuplicates(vector<int>& nums) {
        int n = nums.size(), l = 0, r = 0;
        if (n == 0) return 0;
        while (r < n) {
            while (r < n && nums[r] == nums[l]) r++;
            if (r < n) nums[++l] = nums[r++];
        }
        return l + 1;
    }
};