LeetCode-26.有序数组中去除重复项(26-I, 80-II)

一、LeetCode-26.有序数组中去除重复项

1. 参考: https://www.jb51.net/article/217344.htm

2. 实现

复制代码
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))

int removeDuplicates(int *arr, int sz)
{
    int pre = 0, cur = 0;
    
    while(cur < sz) {
        if (arr[pre] == arr[cur]) {
            cur++;
        } else {
            arr[++pre] = arr[cur++];
        }
    }
    return pre + 1;
}

int main()
{
    int i, len;
    int arr[] = {1,2,2,2,2,2,3,1,1,1,1,4};

    len = removeDuplicates(arr, ARRAY_SIZE(arr));

    for (i = 0; i < len; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
复制代码

 

LeetCode-80.删除有序数组中的重复项Ⅱ

1. 参考

https://blog.csdn.net/weixin_73982851/article/details/145538044?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-145538044-blog-115459119.235^v43^control&spm=1001.2101.3001.4242.1&utm_relevant_index=3

2. 实现

复制代码
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))

/*
nums = [0,0,1,1,1,1,2,3,3]
nums = [0,1,1,1,1,2,3,3,3,4,4,5,6,6,6,7,7,8,9,9,9]
*/
int removeDuplicates(int *arr, int sz)
{
    int i, idx = 0, cnt = 1;

    if (sz < 2) return sz;

    for (i = 1; i < sz; i++) {
        if (arr[i] == arr[idx]) {
            cnt++;
        } else {
            cnt = 1;
        }

        if (cnt <= 2) {
            arr[++idx] = arr[i];
        }
    }

    return idx + 1;
}

int main()
{
    int i, len;
    int arr[] = {0,1,1,1,1,2,3,3,3,4,4,5,6,6,6,7,7,8,9,9,9};

    len = removeDuplicates(arr, ARRAY_SIZE(arr));

    for (i = 0; i < len; i++) {
        printf("%d ", arr[i]); //0 1 1 2 3 3 4 4 5 6 6 7 7 8 9 9 
    }
    printf("\n");

    return 0;
}
复制代码

 

posted on   Hello-World3  阅读(0)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-02-16 调度器30—调度相关结构体—p->flags
2023-02-16 调度器42—进程exit退出流程

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示