주어진 m \times n 행렬(grid)은 행과 열 모두 내림차순으로 정렬되어 있습니다. 이 행렬에서 음수의 개수를 반환하세요.
• 입력: grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
• 출력: 8
• 설명: 이 행렬에는 8개의 음수가 있습니다.
• 입력: grid = [[3,2],[1,0]]
• 출력: 0
• 설명: 이 행렬에는 음수가 없습니다.
• m == grid.length
• n == grid[i].length
• 1 <= m, n <= 100
• -100 <= grid[i][j] <= 100
추가 과제:
O(n + m) 시간 복잡도로 해결할 수 있습니까?
class Solution:
def countNegatives(self, grid: List[List[int]]) -> int:
m = len(grid)
n = len(grid[0])
count = 0
row = 0
col = n - 1
while row < m and col >= 0:
if grid[row][col] < 0:
count += (m - row)
col -= 1
else:
row += 1
return count