当前位置:   article > 正文

leetcode:矩阵置零(java,考察点:零元素如何存储)_lecode如果一个元素为0,将其所在横和列都设为0

lecode如果一个元素为0,将其所在横和列都设为0

题目

  1. 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
  2. 示例 1:
  3. 输入:
  4. [
  5. [1,1,1],
  6. [1,0,1],
  7. [1,1,1]
  8. ]
  9. 输出:
  10. [
  11. [1,0,1],
  12. [0,0,0],
  13. [1,0,1]
  14. ]
  15. 示例 2:
  16. 输入:
  17. [
  18. [0,1,2,0],
  19. [3,4,5,2],
  20. [1,3,1,5]
  21. ]
  22. 输出:
  23. [
  24. [0,0,0,0],
  25. [0,4,5,0],
  26. [0,3,1,0]
  27. ]
  28. 进阶:
  29. 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
  30. 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
  31. 你能想出一个常数空间的解决方案吗?

思路

  1. 将零元素的坐标点存储起来
  2. 将零元素的横坐标所在的行置为零
  3. 将零元素的纵坐标所在的列置为零

java

  1. class Solution {
  2. public void setZeroes(int[][] matrix) {
  3. List<List<Integer>> list = new ArrayList<>();
  4. for (int i = 0; i < matrix.length; i++) {
  5. for (int j = 0; j < matrix[0].length; j++) {
  6. if (matrix[i][j] == 0) {
  7. List<Integer> l = new ArrayList<>();
  8. l.add(i);
  9. l.add(j);
  10. list.add(l);
  11. }
  12. }
  13. }
  14. for(int k = 0; k < list.size(); k++) {
  15. for(int i = 0; i < matrix[0].length; i++) {
  16. matrix[list.get(k).get(0)][i] = 0;
  17. }
  18. for(int i = 0; i < matrix.length; i++) {
  19. matrix[i][list.get(k).get(1)] = 0;
  20. }
  21. }
  22. }
  23. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号