@@ -397,6 +397,242 @@ var setZeroes = function (matrix) {
397
397
};
398
398
```
399
399
400
+ ### ** C**
401
+
402
+ ``` c
403
+ void setZeroes (int ** matrix, int matrixSize, int * matrixColSize) {
404
+ int m = matrixSize;
405
+ int n = matrixColSize[ 0] ;
406
+ int * rows = (int * ) malloc(sizeof(int) * m);
407
+ int * cols = (int * ) malloc(sizeof(int) * n);
408
+ memset(rows, 0, sizeof(int) * m);
409
+ memset(cols, 0, sizeof(int) * n);
410
+ for (int i = 0; i < m; i++) {
411
+ for (int j = 0; j < n; ++j) {
412
+ if (matrix[ i] [ j ] == 0) {
413
+ rows[ i] = 1;
414
+ cols[ j] = 1;
415
+ }
416
+ }
417
+ }
418
+ for (int i = 0; i < m; i++) {
419
+ for (int j = 0; j < n; ++j) {
420
+ if (rows[ i] || cols[ j] ) {
421
+ matrix[ i] [ j ] = 0;
422
+ }
423
+ }
424
+ }
425
+ free(rows);
426
+ free(cols);
427
+ }
428
+ ```
429
+
430
+ ```c
431
+ void setZeroes(int **matrix, int matrixSize, int *matrixColSize) {
432
+ int m = matrixSize;
433
+ int n = matrixColSize[0];
434
+ int l0 = 0;
435
+ int r0 = 0;
436
+ for (int i = 0; i < m; i++) {
437
+ if (matrix[i][0] == 0) {
438
+ l0 = 1;
439
+ break;
440
+ }
441
+ }
442
+ for (int j = 0; j < n; j++) {
443
+ if (matrix[0][j] == 0) {
444
+ r0 = 1;
445
+ break;
446
+ }
447
+ }
448
+ for (int i = 0; i < m; i++) {
449
+ for (int j = 0; j < n; j++) {
450
+ if (matrix[i][j] == 0) {
451
+ matrix[i][0] = 0;
452
+ matrix[0][j] = 0;
453
+ }
454
+ }
455
+ }
456
+ for (int i = 1; i < m; i++) {
457
+ for (int j = 1; j < n; j++) {
458
+ if (matrix[i][0] == 0 || matrix[0][j] == 0) {
459
+ matrix[i][j] = 0;
460
+ }
461
+ }
462
+ }
463
+ if (l0) {
464
+ for (int i = 0; i < m; i++) {
465
+ matrix[i][0] = 0;
466
+ }
467
+ }
468
+ if (r0) {
469
+ for (int j = 0; j < n; j++) {
470
+ matrix[0][j] = 0;
471
+ }
472
+ }
473
+ }
474
+ ```
475
+
476
+ ### ** TypeScript**
477
+
478
+ ``` ts
479
+ /**
480
+ Do not return anything, modify matrix in-place instead.
481
+ */
482
+ function setZeroes(matrix : number [][]): void {
483
+ const m = matrix .length ;
484
+ const n = matrix [0 ].length ;
485
+ const rows = new Array (m ).fill (false );
486
+ const cols = new Array (n ).fill (false );
487
+ for (let i = 0 ; i < m ; i ++ ) {
488
+ for (let j = 0 ; j < n ; j ++ ) {
489
+ if (matrix [i ][j ] === 0 ) {
490
+ rows [i ] = true ;
491
+ cols [j ] = true ;
492
+ }
493
+ }
494
+ }
495
+ for (let i = 0 ; i < m ; i ++ ) {
496
+ for (let j = 0 ; j < n ; j ++ ) {
497
+ if (rows [i ] || cols [j ]) {
498
+ matrix [i ][j ] = 0 ;
499
+ }
500
+ }
501
+ }
502
+ }
503
+ ```
504
+
505
+ ``` ts
506
+ /**
507
+ Do not return anything, modify matrix in-place instead.
508
+ */
509
+ function setZeroes(matrix : number [][]): void {
510
+ const m = matrix .length ;
511
+ const n = matrix [0 ].length ;
512
+ let l0 = false ;
513
+ let r0 = false ;
514
+ for (let i = 0 ; i < m ; i ++ ) {
515
+ if (matrix [i ][0 ] === 0 ) {
516
+ l0 = true ;
517
+ break ;
518
+ }
519
+ }
520
+ for (let j = 0 ; j < n ; j ++ ) {
521
+ if (matrix [0 ][j ] === 0 ) {
522
+ r0 = true ;
523
+ break ;
524
+ }
525
+ }
526
+ for (let i = 0 ; i < m ; i ++ ) {
527
+ for (let j = 0 ; j < n ; j ++ ) {
528
+ if (matrix [i ][j ] === 0 ) {
529
+ matrix [i ][0 ] = 0 ;
530
+ matrix [0 ][j ] = 0 ;
531
+ }
532
+ }
533
+ }
534
+ for (let i = 1 ; i < m ; i ++ ) {
535
+ for (let j = 1 ; j < n ; j ++ ) {
536
+ if (matrix [i ][0 ] === 0 || matrix [0 ][j ] === 0 ) {
537
+ matrix [i ][j ] = 0 ;
538
+ }
539
+ }
540
+ }
541
+ if (l0 ) {
542
+ for (let i = 0 ; i < m ; i ++ ) {
543
+ matrix [i ][0 ] = 0 ;
544
+ }
545
+ }
546
+ if (r0 ) {
547
+ for (let j = 0 ; j < n ; j ++ ) {
548
+ matrix [0 ][j ] = 0 ;
549
+ }
550
+ }
551
+ }
552
+ ```
553
+
554
+ ### ** Rust**
555
+
556
+ ``` rust
557
+ impl Solution {
558
+ pub fn set_zeroes (matrix : & mut Vec <Vec <i32 >>) {
559
+ let m = matrix . len ();
560
+ let n = matrix [0 ]. len ();
561
+ let mut rows = vec! [false ; m ];
562
+ let mut cols = vec! [false ; n ];
563
+ for i in 0 .. m {
564
+ for j in 0 .. n {
565
+ if matrix [i ][j ] == 0 {
566
+ rows [i ] = true ;
567
+ cols [j ] = true ;
568
+ }
569
+ }
570
+ }
571
+ for i in 0 .. m {
572
+ for j in 0 .. n {
573
+ if rows [i ] || cols [j ] {
574
+ matrix [i ][j ] = 0 ;
575
+ }
576
+ }
577
+ }
578
+ }
579
+ }
580
+ ```
581
+
582
+ ``` rust
583
+ impl Solution {
584
+ pub fn set_zeroes (matrix : & mut Vec <Vec <i32 >>) {
585
+ let m = matrix . len ();
586
+ let n = matrix [0 ]. len ();
587
+ let l0 = {
588
+ let mut res = false ;
589
+ for j in 0 .. n {
590
+ if matrix [0 ][j ] == 0 {
591
+ res = true ;
592
+ break ;
593
+ }
594
+ }
595
+ res
596
+ };
597
+ let r0 = {
598
+ let mut res = false ;
599
+ for i in 0 .. m {
600
+ if matrix [i ][0 ] == 0 {
601
+ res = true ;
602
+ break ;
603
+ }
604
+ }
605
+ res
606
+ };
607
+ for i in 0 .. m {
608
+ for j in 0 .. n {
609
+ if matrix [i ][j ] == 0 {
610
+ matrix [i ][0 ] = 0 ;
611
+ matrix [0 ][j ] = 0 ;
612
+ }
613
+ }
614
+ }
615
+ for i in 1 .. m {
616
+ for j in 1 .. n {
617
+ if matrix [i ][0 ] == 0 || matrix [0 ][j ] == 0 {
618
+ matrix [i ][j ] = 0 ;
619
+ }
620
+ }
621
+ }
622
+ if l0 {
623
+ for j in 0 .. n {
624
+ matrix [0 ][j ] = 0 ;
625
+ }
626
+ }
627
+ if r0 {
628
+ for i in 0 .. m {
629
+ matrix [i ][0 ] = 0 ;
630
+ }
631
+ }
632
+ }
633
+ }
634
+ ```
635
+
400
636
### ** ...**
401
637
402
638
```
0 commit comments