You are given an
m x n binary matrix grid.In one operation, you can choose any row or column and flip each value in that row or column (i.e., changing all
0‘s to 1‘s, and all 1‘s to 0‘s).Return
true if it is possible to remove all 1‘s from grid using any number of operations or false otherwise.Example 1:

Input: grid = [[0,1,0],[1,0,1],[0,1,0]]
Output: true
Explanation: One possible way to remove all 1’s from grid is to:
- Flip the middle row
- Flip the middle column
Example 2:

Input: grid = [[1,1,0],[0,0,0],[0,0,0]]
Output: false
Explanation: It is impossible to remove all 1’s from grid.
Example 3:

Input: grid = [[0]]
Output: true
Explanation: There are no 1’s in grid.
Constraints:
m == grid.length
n == grid[i].length1 <= m, n <= 300
grid[i][j] is either 0 or 1.题目大意:
给定一个矩阵,每次可以flip一行或一列,求是否可以令矩阵变成全0
解题思路:
从例子找规律,
010和010属于一种类型
010和101也是同一种,每一行必须符合任何一种类型才是解
解题步骤:
N/A
注意事项:
Python代码:
1
2
3
4
5
6def removeOnes(self, grid: List[List[int]]) -> bool:
row_patten, row_pattern_invert = grid[0], [1 - n for n in grid[0]]
for i in range(1, len(grid)):
if grid[i] != row_patten and grid[i] != row_pattern_invert:
return False
return True
算法分析:
时间复杂度为O(n2),空间复杂度O(n)


