O(1) 额外空间

清除行列

http://www.nowcoder.com/questionTerminal/c95aac1506574dfc8ad44c3939c6739d

class Clearer {
public:
    vector<vector<int> > clearZero(vector<vector<int> > mat, int n) {
        bool fr = any_of(mat[0].begin(), mat[0].end(), [](auto x) {return x==0;});
        bool fc = false;

        for (int i = 0; i < n; ++i) {
            if (mat[i][0] == 0) {
                fc = true;
                break;
            }
        }

        for (int i = 1; i < n; ++i) {
            for (int j = 1; j < n; ++j) {
                if (mat[i][j] == 0) mat[i][0] = mat[0][j] = 0;
            }
        }
        for (int i = 1; i < n; ++i) {
            for (int j = 1; j < n; ++j) {
                if (mat[i][0] == 0 || mat[0][j] == 0) mat[i][j] = 0;
            }
        }

        if (fr) fill(mat[0].begin(), mat[0].end(), 0);
        if (fc) for (int i = 0; i < n; ++i) mat[i][0] = 0;

        return mat;
    }
};
全部评论

相关推荐

Jcwemz:都快过年了,就没几家真正招的,100个投递两个面试算是正常的了 加上你的简历,其实你不能很好的描述你自己是做什么的 两个月的时间,你就负责到自动化的内容啦?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务