1. // 矩阵置零
    2. var setZeroes = function(matrix) {
    3. let firstColHasZero = false;
    4. let firstRowHasZero = false;
    5. // 检查第一列是否有零
    6. for (let i = 0; i < matrix.length; i++) {
    7. if (matrix[i][0] === 0) {
    8. firstColHasZero = true;
    9. }
    10. }
    11. // 检查第一行是否有零
    12. for (let i = 0; i < matrix[0].length; i++) {
    13. if (matrix[0][i] === 0) {
    14. firstRowHasZero = true;
    15. }
    16. }
    17. // 使用第一行与第一列标记其余行列是否含有零
    18. for (let row = 1; row < matrix.length; row++) {
    19. for (let col = 1; col < matrix[0].length; col++) {
    20. if (matrix[row][col] === 0) {
    21. matrix[0][col] = 0;
    22. matrix[row][0] = 0;
    23. }
    24. }
    25. }
    26. // 利用第一行与第一列的标零情况,将matrix中的数字置零
    27. for (let row = 1; row < matrix.length; row++) {
    28. for (let col = 1; col < matrix[0].length; col++) {
    29. if (matrix[0][col] === 0 || matrix[row][0] === 0) {
    30. matrix[row][col] = 0;
    31. }
    32. }
    33. }
    34. // 处理第一行和第一列
    35. if (firstColHasZero) {
    36. for (let i = 0; i < matrix[0].length; i++) {
    37. matrix[i][0] = 0;
    38. }
    39. }
    40. if (firstRowHasZero) {
    41. for (let i = 0; i < matrix.length; i++) {
    42. matrix[0][i] = 0;
    43. }
    44. }
    45. }