LeetCode Online Judge 题目C# 练习 - Set Matrix Zeroes
2012-10-17 00:57
330 查看
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
代码分析:
上面代码的Space(1)的做法,最好的的做法。
Space(m * n),最简单的做法是是, 建一个一样m * n 的矩阵,标记需要改为0的坐标。然后在loop一遍矩阵,在原矩阵改0
Space (m + n), 稍好一点的做法, 建两个数组,row[], col[], 标记需要改为0的 行 和 列。然后在loop一遍两数组,在原矩阵改0
Space (1),就是代码中的做法,在loop原矩阵的时候,把该 行 和 列的第一个元素标0, 在loop一遍行,一边列,改0。有个问题是,loop列的时候要去掉第一列,不然下面loop行的时候就会全变 0 了,所以用一个flag,标记第一列需要改0。
public static void SetMatrixZeros(List<List<int>> matrix) { bool col0 = false; for (int i = 0; i < matrix.Count; i++) { for (int j = 0; j < matrix[i].Count; j++) { if (matrix[i][j] == 0) { if (j == 0) col0 = true; else { matrix[i][0] = 0; matrix[0][j] = 0; } } } } for (int j = 1; j < matrix[0].Count; j++) { if (matrix[0][j] == 0) { for (int i = 1; i < matrix.Count; i++) { matrix[i][j] = 0; } } } for (int i = 0; i < matrix.Count; i++) { if (matrix[i][0] == 0) { for (int j = 1; j < matrix[i].Count; j++) { matrix[i][j] = 0; } } } if (col0) { for (int i = 0; i < matrix.Count; i++) { matrix[i][0] = 0; } } }
代码分析:
上面代码的Space(1)的做法,最好的的做法。
Space(m * n),最简单的做法是是, 建一个一样m * n 的矩阵,标记需要改为0的坐标。然后在loop一遍矩阵,在原矩阵改0
Space (m + n), 稍好一点的做法, 建两个数组,row[], col[], 标记需要改为0的 行 和 列。然后在loop一遍两数组,在原矩阵改0
Space (1),就是代码中的做法,在loop原矩阵的时候,把该 行 和 列的第一个元素标0, 在loop一遍行,一边列,改0。有个问题是,loop列的时候要去掉第一列,不然下面loop行的时候就会全变 0 了,所以用一个flag,标记第一列需要改0。
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Maximum Subarray
- LeetCode Online Judge 题目C# 练习 - Merge Sorted Array
- LeetCode Online Judge 题目C# 练习 - Add Binary
- LeetCode Online Judge 题目C# 练习 - Divid Two Integer
- LeetCode Online Judge 题目C# 练习 - Combination
- LeetCode Online Judge 题目C# 练习 - Plus One
- LeetCode Online Judge 题目C# 练习 - Regular Expression Matching
- LeetCode Online Judge 题目C# 练习 - Remove Element
- LeetCode Online Judge 题目C# 练习 - Sprial Matrix
- LeetCode Online Judge 题目C# 练习 - String to Integer (atoi)
- LeetCode Online Judge 题目C# 练习 - Valid Number
- LeetCode Online Judge 题目C# 练习 - Pow(x, n)
- LeetCode Online Judge 题目C# 练习 - N-Queens
- LeetCode Online Judge 题目C# 练习 - Search Insert Position
- LeetCode Online Judge 题目C# 练习 - Valid Sudoku
- LeetCode Online Judge 题目C# 练习 - Add two number
- LeetCode Online Judge 题目C# 练习 - Same Tree
- LeetCode Online Judge 题目C# 练习 - Climbing Stairs
- LeetCode Online Judge 题目C# 练习 - Gray Code
- LeetCode Online Judge 题目C# 练习 - Anagrams