18、矩阵-矩阵置零

题解:这道题不能直接双层遍历遇到0就开始行列置零,会影响下次循环遍历。所以可以通过两个集合来记录0所在的行和列,然后再双层遍历遇到标记置0,代码如下:

java 复制代码
class Solution {
    public void setZeroes(int[][] matrix) {
        if (matrix==null||matrix.length==0){
            return;
        }
        Set<Integer> xSet = new HashSet<>();
        Set<Integer> ySet = new HashSet<>();
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (matrix[i][j]==0){
                    xSet.add(i);
                    ySet.add(j);
                }
            }
        }
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                if (xSet.contains(i)||ySet.contains(j)){
                    matrix[i][j]=0;
                }
            }
        }
    }
}
相关推荐
努力中的编程者5 分钟前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector
东华万里13 分钟前
第32篇 数据结构入门 单链表的增删查改实现
数据结构·链表
weixin_4000056030 分钟前
RL-frenet-trajectory-planning-in-CARLA
人工智能·深度学习·算法·机器学习·自动驾驶
Keven_1134 分钟前
AcWing算法提高课思路速查:动态规划
算法·动态规划
剑挑星河月43 分钟前
94.二叉树的中序遍历
java·算法·leetcode
拳里剑气44 分钟前
C++算法:队列与BFS
c++·算法·bfs·宽度优先·队列
2301_801184751 小时前
docker 工作
java·docker·容器
老前端的功夫1 小时前
【Java从入门到入土】47:构建工具:Maven与Gradle的战争
java·python·maven
aaPIXa6221 小时前
C++模板元编程:在编译期完成计算,实现零运行时开销
java·开发语言·c++
Ivanqhz1 小时前
注意力机制
线性代数·算法·矩阵·哈希算法·dnn