File tree Expand file tree Collapse file tree 6 files changed +122
-0
lines changed
0010.Regular Expression Matching
0011.Container With Most Water Expand file tree Collapse file tree 6 files changed +122
-0
lines changed Original file line number Diff line number Diff line change @@ -579,6 +579,36 @@ class Solution {
579579}
580580```
581581
582+ #### C
583+
584+ ``` C
585+ bool isMatch (char * s, char * p) {
586+ int m = strlen(s), n = strlen(p);
587+ bool ** dp = malloc((m + 1) * sizeof(bool * ));
588+ for (int i = 0; i <= m; i++)
589+ dp[ i] = calloc(n + 1, sizeof(bool));
590+ dp[ 0] [ 0 ] = 1;
591+ for (int j = 2; j <= n; j++)
592+ if (p[ j - 1] == '* ')
593+ dp[ 0] [ j ] = dp[ 0] [ j - 2 ] ;
594+
595+ for (int i = 1; i <= m; i++)
596+ for (int j = 1; j <= n; j++)
597+ if (p[ j - 1] == '* ')
598+ dp[ i] [ j ] = dp[ i] [ j - 2 ] ||
599+ ((p[ j - 2] == '.' || p[ j - 2] == s[ i - 1] ) && dp[ i - 1] [ j ] );
600+ else
601+ dp[ i] [ j ] =
602+ (p[ j - 1] == '.' || p[ j - 1] == s[ i - 1] ) && dp[ i - 1] [ j - 1 ] ;
603+
604+ bool res = dp[ m] [ n ] ;
605+ for (int i = 0; i <= m; i++)
606+ free(dp[ i] );
607+ free(dp);
608+ return res;
609+ }
610+ ```
611+
582612<!-- tabs:end -->
583613
584614<!-- solution:end -->
Original file line number Diff line number Diff line change @@ -578,6 +578,35 @@ class Solution {
578578}
579579```
580580
581+ #### C
582+
583+ ``` C
584+ bool isMatch (char * s, char * p) {
585+ int m = strlen(s), n = strlen(p);
586+ bool ** dp = malloc((m + 1) * sizeof(bool * ));
587+ for (int i = 0; i <= m; i++)
588+ dp[ i] = calloc(n + 1, sizeof(bool));
589+ dp[ 0] [ 0 ] = 1;
590+ for (int j = 2; j <= n; j++)
591+ if (p[ j - 1] == '* ')
592+ dp[ 0] [ j ] = dp[ 0] [ j - 2 ] ;
593+
594+ for (int i = 1; i <= m; i++)
595+ for (int j = 1; j <= n; j++)
596+ if (p[ j - 1] == '* ')
597+ dp[ i] [ j ] = dp[ i] [ j - 2 ] ||
598+ ((p[ j - 2] == '.' || p[ j - 2] == s[ i - 1] ) && dp[ i - 1] [ j ] );
599+ else
600+ dp[ i] [ j ] =
601+ (p[ j - 1] == '.' || p[ j - 1] == s[ i - 1] ) && dp[ i - 1] [ j - 1 ] ;
602+
603+ bool res = dp[ m] [ n ] ;
604+ for (int i = 0; i <= m; i++)
605+ free(dp[ i] );
606+ free(dp);
607+ return res;
608+ }
609+ ```
581610<!-- tabs:end -->
582611
583612<!-- solution:end -->
Original file line number Diff line number Diff line change 1+ bool isMatch (char * s , char * p ) {
2+ int m = strlen (s ), n = strlen (p );
3+ bool * * dp = malloc ((m + 1 ) * sizeof (bool * ));
4+ for (int i = 0 ; i <= m ; i ++ )
5+ dp [i ] = calloc (n + 1 , sizeof (bool ));
6+ dp [0 ][0 ] = 1 ;
7+ for (int j = 2 ; j <= n ; j ++ )
8+ if (p [j - 1 ] == '*' )
9+ dp [0 ][j ] = dp [0 ][j - 2 ];
10+
11+ for (int i = 1 ; i <= m ; i ++ )
12+ for (int j = 1 ; j <= n ; j ++ )
13+ if (p [j - 1 ] == '*' )
14+ dp [i ][j ] = dp [i ][j - 2 ] || ((p [j - 2 ] == '.' || p [j - 2 ] == s [i - 1 ]) && dp [i - 1 ][j ]);
15+ else
16+ dp [i ][j ] = (p [j - 1 ] == '.' || p [j - 1 ] == s [i - 1 ]) && dp [i - 1 ][j - 1 ];
17+
18+ bool res = dp [m ][n ];
19+ for (int i = 0 ; i <= m ; i ++ )
20+ free (dp [i ]);
21+ free (dp );
22+ return res ;
23+ }
Original file line number Diff line number Diff line change @@ -262,6 +262,22 @@ class Solution {
262262}
263263```
264264
265+ #### C
266+
267+ ``` C
268+
269+ int maxArea (int * h, int n) {
270+ int l = 0, r = n - 1, max = 0;
271+ while (l < r) {
272+ int area = (r - l) * (h[ l] < h[ r] ? h[ l++] : h[ r--] );
273+ if (area > max)
274+ max = area;
275+ }
276+ return max;
277+ }
278+
279+ ```
280+
265281<!-- tabs:end -->
266282
267283<!-- solution:end -->
Original file line number Diff line number Diff line change @@ -259,6 +259,21 @@ class Solution {
259259}
260260```
261261
262+ #### C
263+
264+ ``` C
265+
266+ int maxArea (int * h, int n) {
267+ int l = 0, r = n - 1, max = 0;
268+ while (l < r) {
269+ int area = (r - l) * (h[ l] < h[ r] ? h[ l++] : h[ r--] );
270+ if (area > max)
271+ max = area;
272+ }
273+ return max;
274+ }
275+
276+ ```
262277<!-- tabs:end -->
263278
264279<!-- solution:end -->
Original file line number Diff line number Diff line change 1+ int maxArea (int * h , int n ) {
2+ int l = 0 , r = n - 1 , max = 0 ;
3+ while (l < r ) {
4+ int area = (r - l ) * (h [l ] < h [r ] ? h [l ++ ] : h [r -- ]);
5+ if (area > max )
6+ max = area ;
7+ }
8+ return max ;
9+ }
You can’t perform that action at this time.
0 commit comments