Problem
leetcode链接problem
几步走吧。第一步把是0的情况的横纵坐标放在两个vector中,第二步是将vector中相同的情况删除以避免重复计算,第三步是把需要置零的行列置零。
Code
using namespace std;
class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
vector<int> m;
vector<int> n;
int m_length = matrix.size();
int n_length = matrix[0].size();
for(int i = 0;i< m_length;i++)
{
for(int j = 0;j < n_length;j++)
{
if(matrix[i][j] == 0)
{
m.push_back(i);
n.push_back(j);
}
}
}
sort(m.begin(),m.end());
m.erase(unique(m.begin(), m.end()), m.end());
sort(n.begin(),n.end());
n.erase(unique(n.begin(), n.end()), n.end());
for(int i = 0;i < m.size();i++)
{
for(int j = 0;j < n_length;j++)
{
matrix[m[i]][j] = 0;
}
}
for(int i = 0;i<n.size();i++)
{
for(int j = 0;j < m_length;j++)
{
matrix[j][n[i]] = 0;
}
}
}
};