矩阵置零(标记数组)
给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 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]]
思路:使用标记数组,用两个标记数组分别记录每一行和每一列是否有零出现,具体地,我们首先遍历该数组一次,如果某个元素为 0,那么就将该元素所在的行和列所对应标记数组的位置置为 true。最后我们再次遍历该数组,用标记数组更新原数组即可。
class Solution { public: void setZeroes(vector<vector<int>>& matrix) { //使用标记数组,记录行数与列数 int m = matrix.size(); int n = matrix[0].size(); vector<int> row(m,0); vector<int> col(n,0); //标记数组 for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(matrix[i][j]==0){ row[i]=1; col[j]=1; } } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(row[i]==1||col[j]==1){ matrix[i][j] = 0; } } } } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探