Leetcode—80.删除有序数组中的重复项II【中等】

2023每日刷题(十)

Leetcode—80.删除有序数组中的重复项II

Leetcode—80.删除有序数组中的重复项II【中等】_第1张图片

双指针实现代码

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

运行结果

Leetcode—80.删除有序数组中的重复项II【中等】_第2张图片

朴素法实现代码

int removeDuplicates(int* nums, int numsSize){
    if(numsSize == 1 || numsSize == 2) {
        return numsSize;
    }
    int k = 2;
    int i = 0;
    for(i = 2; i < numsSize; i++) {
        if(!(nums[k - 2] == nums[k - 1] && nums[i] == nums[k - 1])) {
            nums[k] = nums[i];
            k++;
        }
    }
    return k;
}

运行结果

Leetcode—80.删除有序数组中的重复项II【中等】_第3张图片

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

你可能感兴趣的:(LeetCode刷题,leetcode,算法,职场和发展,c语言,双指针,经验分享)