@@ -397,6 +397,242 @@ var setZeroes = function (matrix) {
397397};
398398```
399399
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+
400636### ** ...**
401637
402638```
0 commit comments