# 2536. Increment Submatrices by One
###### tags: `Leetcode` `Medium` `Line Sweep`
Link: https://leetcode.com/problems/increment-submatrices-by-one/description/
## 思路
思路参考[这里](https://leetcode.com/problems/increment-submatrices-by-one/solutions/3052675/python3-sweep-line-range-addition-with-visualization-clean-concise/)
### 思路一 $O(qn+n^2)$
对于每一个query给涉及的每一行都标上+-1
### 思路二 $O(q+n^2)$
2D Line Sweep
左上角+1 右上角-1 左下角-1 右下角+1
然后先sweep line on rows再sweep line on columns
## Code
### 思路一
```python=
class Solution:
def rangeAddQueries(self, n: int, queries: List[List[int]]) -> List[List[int]]:
ans = [[0]*n for _ in range(n)]
for r1, c1, r2, c2 in queries:
for r in range(r1, r2+1):
ans[r][c1] += 1
if c2+1<n: ans[r][c2+1] -= 1
for r in range(n):
for c in range(1, n):
ans[r][c] += ans[r][c-1]
return ans
```
### 思路二
```python=
class Solution:
def rangeAddQueries(self, n: int, queries: List[List[int]]) -> List[List[int]]:
ans = [[0]*n for _ in range(n)]
for r1, c1, r2, c2 in queries:
ans[r1][c1] += 1
if r2+1<n: ans[r2+1][c1] -= 1
if c2+1<n: ans[r1][c2+1] -= 1
if r2+1<n and c2+1<n: ans[r2+1][c2+1] += 1
for r in range(n):
for c in range(1, n):
ans[r][c] += ans[r][c-1]
for c in range(n):
for r in range(1, n):
ans[r][c] += ans[r-1][c]
return ans
```