我无法在我的代码中找到错误。它给出了这个测试用例的错误[0,0] [0,1]

时间:2017-02-24 13:47:29

标签: java arraylist

https://discuss.leetcode.com/topic/5056/any-shorter-o-1-space-solution 我从这里开始使用这个c ++解决方案并尝试将其转换为java

public void setZeroes(ArrayList<ArrayList<Integer>> a) {
    int colzero = 1;

    int rows = a.size();
    int cols = a.get(0).size();

    for (int i = 0; i < rows; i++)
    {
        if (a.get(i).get(0) == 0)
            colzero = 0;

        for (int j = 1; j < cols; j++)
        {
            if (a.get(i).get(j) == 0)
                a.get(i).set(0, 0);
            a.get(0).set(j, 0);
        }
    }

    for (int i = rows - 1; i >= 0; i--) {
        for (int j = cols - 1; j >= 1; j--) {
            if (a.get(i).get(0) == 0 || a.get(0).get(j) == 0)
                a.get(i).set(j, 0);
        }
        if (colzero == 0)
        {
            a.get(i).set(0, 0);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你需要在if块周围使用花括号,因为你已将它分成两个指令(C ++中只有一个)。

if(a.get(i).get(j)==0) {
            a.get(i).set(0,0);
            a.get(0).set(j,0);
}