矩阵置零
矩阵置零
给定一个m x n
的矩阵,如果一个元素为0
,则将其所在行和列的所有元素都设为0
。请使用原地算法。
示例#
输入:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
输出:
[
[1,0,1],
[0,0,0],
[1,0,1]
]
输入:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
输出:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]
题解#
/**
* @param {number[][]} matrix
* @return {void} Do not return anything, modify matrix in-place instead.
*/
var setZeroes = function(matrix) {
var row = new Set();
var column = new Set();
matrix.forEach( (line, i) => {
line.forEach( (v, k) => {
if(v === 0) {
row.add(i);
column.add(k);
}
})
} )
matrix.forEach( (line, i) => {
line.forEach( (v, k) => {
if( row.has(i) || column.has(k) ) matrix[i][k] = 0;
})
} )
};
思路#
使用了比较简单的解法,首先设置两个Set
用以记录需要置0
的行号和列号,然后遍历矩阵,如果遍历到矩阵的值为0
,那么就将该值的行号与列号分别记录到两个Set
中,然后再次遍历整个矩阵,如果该值的行号或者列号在Set
中,那么就将矩阵中的这个值置为0
,遍历完成之后就实现了原地置0
。
每日一题#
https://github.com/WindrunnerMax/EveryDay
题源#
https://leetcode-cn.com/problems/set-matrix-zeroes/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理