File tree Expand file tree Collapse file tree 1 file changed +60
-0
lines changed
Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change 1+ /* *
2+ * 풀이
3+ * - matrix 전체를 탐색하다가 값이 0인 좌표를 찾으면
4+ * 그 좌표의 첫번째 열, 첫번째 행 좌표에 표시를 합니다
5+ * if matrix[r][c] == 0
6+ * matrix[r][0] = 0
7+ * matrix[0][c] = 0
8+ * - 만약 해당 좌표가 첫번째 행이거나 첫번째 열이라면 따로 기록해둡니다
9+ * - 첫번째 완전탐색을 마친 후엔 matrix의 첫번째 행, 열을 보고 문제에서 요구하는 바를 수행합니다
10+ *
11+ * Big O
12+ * - M: matrix의 행 개수
13+ * - N: matrix의 열 개수
14+ *
15+ * - Time complexity: O(MN)
16+ * - Space complexity: O(1)
17+ *
18+ */
19+
20+ class Solution {
21+ public:
22+ void setZeroes (vector<vector<int >>& matrix) {
23+ int m = matrix.size ();
24+ int n = matrix[0 ].size ();
25+
26+ bool first_row = false ;
27+ bool first_col = false ;
28+
29+ for (int r = 0 ; r < m; ++r) {
30+ for (int c = 0 ; c < n; ++c) {
31+ if (!matrix[r][c]) {
32+ if (!r) first_row = true ;
33+ if (!c) first_col = true ;
34+ matrix[r][0 ] = 0 ;
35+ matrix[0 ][c] = 0 ;
36+ }
37+ }
38+ }
39+
40+ for (int r = 1 ; r < m; ++r) {
41+ if (!matrix[r][0 ]) {
42+ for (int c = 1 ; c < n; ++c) matrix[r][c] = 0 ;
43+ }
44+ }
45+
46+ for (int c = 1 ; c < n; ++c) {
47+ if (!matrix[0 ][c]) {
48+ for (int r = 1 ; r < m; ++r) matrix[r][c] = 0 ;
49+ }
50+ }
51+
52+ if (first_row) {
53+ for (int c = 0 ; c < n; ++c) matrix[0 ][c] = 0 ;
54+ }
55+
56+ if (first_col) {
57+ for (int r = 0 ; r < m; ++r) matrix[r][0 ] = 0 ;
58+ }
59+ }
60+ };
You can’t perform that action at this time.
0 commit comments