Skip to content

Commit 75e3e87

Browse files
committed
feat: add solutions to lcci problem: No.01.08
No.01.08.Zero Matrix
1 parent c95c91d commit 75e3e87

File tree

5 files changed

+612
-0
lines changed

5 files changed

+612
-0
lines changed

lcci/01.08.Zero Matrix/README.md

+236
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)