From 906b2acca797c00091c3406a2f1c9c6c7ebaa75e Mon Sep 17 00:00:00 2001 From: Frank-whw <2120320012@qq.com> Date: Wed, 19 Mar 2025 10:45:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=AD=90=E5=BA=8F=E5=92=8C(=E5=8A=A8=E6=80=81=E8=A7=84?= =?UTF-8?q?=E5=88=92).md=20c=E8=AF=AD=E8=A8=80=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...01\350\247\204\345\210\222\357\274\211.md" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git "a/problems/0053.\346\234\200\345\244\247\345\255\220\345\272\217\345\222\214\357\274\210\345\212\250\346\200\201\350\247\204\345\210\222\357\274\211.md" "b/problems/0053.\346\234\200\345\244\247\345\255\220\345\272\217\345\222\214\357\274\210\345\212\250\346\200\201\350\247\204\345\210\222\357\274\211.md" index 38a3a11818..444dcdab7f 100644 --- "a/problems/0053.\346\234\200\345\244\247\345\255\220\345\272\217\345\222\214\357\274\210\345\212\250\346\200\201\350\247\204\345\210\222\357\274\211.md" +++ "b/problems/0053.\346\234\200\345\244\247\345\255\220\345\272\217\345\222\214\357\274\210\345\212\250\346\200\201\350\247\204\345\210\222\357\274\211.md" @@ -241,6 +241,35 @@ function maxSubArray(nums: number[]): number { return resMax } ``` +### C: +```c +bool isSubsequence(char *s, char *t) +{ + bool **dp = malloc(sizeof(bool *) * (strlen(s) + 1)); + for (int i = 0; i <= strlen(s); i++) + { + dp[i] = malloc(sizeof(bool) * (strlen(t) + 1)); + } + // 初始化 + for (int i = 0; i <= strlen(s); i++) + { + dp[i][0] = false; + } + for (int j = 0; j <= strlen(t); j++) + { + dp[0][j] = true; + } + // 遍历 + for (int i = 1; i <= strlen(s); i++) + { + for (int j = 1; j <= strlen(t); j++) + { + dp[i][j] = s[i - 1] == t[j - 1] ? dp[i - 1][j - 1] : dp[i][j - 1]; + } + } + return dp[strlen(s)][strlen(t)]; +} +``` From 0d5d25a4e89a20f5d9c61472aaaaf8d53454cc6d Mon Sep 17 00:00:00 2001 From: Frank-whw <2120320012@qq.com> Date: Thu, 20 Mar 2025 22:23:46 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A00115.=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E5=AD=90=E5=BA=8F=E5=88=97.md=20C=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04\345\255\220\345\272\217\345\210\227.md" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git "a/problems/0115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" "b/problems/0115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" index 1df3d899a8..97e8195262 100644 --- "a/problems/0115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" +++ "b/problems/0115.\344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" @@ -371,6 +371,45 @@ impl Solution { } } ``` +### C: +```c +#define MOD 1000000007 +int numDistinct(char *s, char *t) +{ + //dp[i][j]: t前i个字符,s前j个字符,s子序列中t出现的个数 + int **dp = malloc(sizeof(int *) * (strlen(t) + 1)); + for (int i = 0; i <= strlen(t); i++) + { + dp[i] = malloc(sizeof(int) * (strlen(s) + 1)); + } + + // 初始化 + for (int i = 0; i <= strlen(t); i++) + { + dp[i][0] = 0; + } + for (int j = 0; j <= strlen(s); j++) + { + dp[0][j] = 1; + } + // 遍历 + for (int i = 1; i <= strlen(t); i++) + { + for (int j = 1; j <= strlen(s); j++) + { + if (s[j - 1] == t[i - 1]) + { + dp[i][j] = dp[i - 1][j - 1] + dp[i][j - 1]; + } + else + { + dp[i][j] = dp[i][j - 1]; + } + } + } + return dp[strlen(t)][strlen(s)] % MOD; +} +``` From 5714b2cfa13796a68feb7678234b73a78414f4fb Mon Sep 17 00:00:00 2001 From: Frank-whw <2120320012@qq.com> Date: Sun, 30 Mar 2025 14:48:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A00435.=E6=97=A0=E9=87=8D?= =?UTF-8?q?=E5=8F=A0=E5=8C=BA=E9=97=B4.md=20C=E8=AF=AD=E8=A8=80=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E6=8C=89=E7=85=A7=E5=B7=A6=E8=BE=B9=E7=95=8C?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\345\217\240\345\214\272\351\227\264.md" | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git "a/problems/0435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" "b/problems/0435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" index 04845ea7c3..27285ba43a 100644 --- "a/problems/0435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" +++ "b/problems/0435.\346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" @@ -440,7 +440,7 @@ impl Solution { } ``` ### C - +- 按右边界排序 ```c // 按照区间右边界排序 int cmp(const void * var1, const void * var2){ @@ -465,6 +465,41 @@ int eraseOverlapIntervals(int** intervals, int intervalsSize, int* intervalsColS return intervalsSize - count; } ``` +- 按左边界排序 +```c +// 按照区间左边界排序 +int cmp(const void *a, const void *b) +{ + return *((int **)a)[0] - *((int **)b)[0]; +} +int eraseOverlapIntervals(int **intervals, int intervalsSize, int *intervalsColSize) +{ + if (intervalsSize == 0) + { + return 0; + } + qsort(intervals, intervalsSize, sizeof(intervals[0]), cmp); + // count: 重叠的区间数量 + int count = 0; + // end: 区间分割点 + int end = intervals[0][1]; + for (int i = 1; i < intervalsSize; i++) + { + if (intervals[i][0] < end) + { + // 说明有重合, end取2个区间中较小的右边界 + end = fmin(end, intervals[i][1]); + count++; + } + else + { + // 没有重合,更新end + end = intervals[i][1]; + } + } + return count; +} +```