要求額外空間要是常數
用row0/col0 來存對應的row/col要不要清零
再用兩個變數來存row0/col0要不要清零
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | class Solution { public: void setZeroes(vector<vector<int>>& matrix) { int N = matrix.size(); int M = matrix[0].size(); bool isFirstColZero = false; bool isFirstRowZero = false; for (int i = 0; i < N; i++) if (matrix[i][0] == 0) isFirstColZero = true; for (int i = 0; i < M; i++) if (matrix[0][i] == 0) isFirstRowZero = true; for (int i = 1; i < N; i++) for (int j = 1; j < M; j++) if (matrix[i][j] == 0) { matrix[i][0] = 0; matrix[0][j] = 0; } for (int i = 1; i < N; i++) for (int j = 1; j < M; j++) if (matrix[i][0] == 0 || matrix[0][j] == 0) matrix[i][j] = 0; if (isFirstColZero) for (int i = 0; i < N; i++) matrix[i][0] = 0; if (isFirstRowZero) for (int i = 0; i < M; i++) matrix[0][i] = 0; } }; |