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);
}
}
}
答案 0 :(得分:0)
你需要在if块周围使用花括号,因为你已将它分成两个指令(C ++中只有一个)。
if(a.get(i).get(j)==0) {
a.get(i).set(0,0);
a.get(0).set(j,0);
}