• leetcode Top100(17)矩阵置零


    给定一个 m x n 的矩阵,如果一个元素为 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法

    示例 1:

    输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
    输出:[[1,0,1],[0,0,0],[1,0,1]]
    

    示例 2:

    输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
    输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
    1. package TOP11_20;
    2. import java.util.HashSet;
    3. import java.util.Set;
    4. // 矩阵置零
    5. //给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
    6. // 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
    7. //输出:[[1,0,1],[0,0,0],[1,0,1]]
    8. public class Top18 {
    9. // 用两个hash表记录行和列为0的数据 然后再修改数组值
    10. public static void setZeroes(int[][] matrix) {
    11. Set colZeroSets = new HashSet();
    12. Set rowZeroSets = new HashSet();
    13. int row = matrix.length;
    14. int height = matrix[0].length;
    15. for (int i = 0; i < row; i++) {
    16. for (int j = 0; j < height; j++) {
    17. if (matrix[i][j] == 0) {
    18. colZeroSets.add(i);
    19. rowZeroSets.add(j);
    20. }
    21. }
    22. }
    23. for (int i = 0; i < row; i++) {
    24. for (int j = 0; j < height; j++) {
    25. if (colZeroSets.contains(i) || rowZeroSets.contains(j)) {
    26. matrix[i][i] = 0;
    27. }
    28. }
    29. }
    30. }
    31. // 直接用第一行和第一列 来记录,但先将第一行和第一列是否有为0的数据记录下来 然后再赋值,最后赋值第一行和第一列
    32. public static void setZeroes2(int[][] matrix) {
    33. int row = matrix.length;
    34. int height = matrix[0].length;
    35. boolean firstRowHasZero = false;
    36. boolean firstColHasZero = false;
    37. for(int i=0 ;i
    38. if(matrix[i][0] ==0)
    39. {
    40. firstRowHasZero = true;
    41. break;
    42. }
    43. }
    44. for(int j=0 ;j
    45. if(matrix[0][j] ==0)
    46. {
    47. firstColHasZero = true;
    48. break;
    49. }
    50. }
    51. for(int i =1;i
    52. for(int j=1;j
    53. if(matrix[i][j] ==0){
    54. matrix[i][0] =0;
    55. matrix[0][j] = 0;
    56. }
    57. }
    58. }
    59. for(int i = 1;i
    60. for(int j =1;j
    61. if(matrix[i][0] ==0 || matrix[0][j] ==0){
    62. matrix[i][j] =0;
    63. }
    64. }
    65. }
    66. if(firstRowHasZero) {
    67. for(int i=0 ;i
    68. matrix[i][0] =0;
    69. }
    70. }
    71. if(firstColHasZero) {
    72. for(int j=0 ;j
    73. matrix[0][j] =0;
    74. }
    75. }
    76. }
    77. public static void main(String[] args) {
    78. int[][] martirc = {{1,1,1},{1,0,1},{1,1,1}};
    79. setZeroes2(martirc);
    80. System.out.println("end");
    81. }
    82. }

    harryptter / LeetcodeTop100 · GitCode

  • 相关阅读:
    菜鸟、顺丰、京东物流:无“智”难行?
    排序算法-----希尔排序
    jmeter入门:接口压力测试全解析
    1. 创建第一个harmonyos工程
    QT基础入门——界面布局和常用控件(四)
    计算机网络【HTTP请求构造与HTTPS】
    xorm数据库操作之Join、Union
    sql报错:sql injection violation, syntax error
    利用cms主题构造木马(CVE-2022-26965)
    Ubuntu 22.04 搭建 KubeSphere 3.4.1 集群
  • 原文地址:https://blog.csdn.net/harryptter/article/details/133241128