# 1989. Maximum Number of People That Can Be Caught in Tag
###### tags: `Leetcode` `Two Pointers` `Medium` `Greedy`
Link: https://leetcode.com/problems/maximum-number-of-people-that-can-be-caught-in-tag/
## 思路 $O(N)$ $O(1)$
非典型的双指针问题
用p1找每个1出现的位置 p2找要catch哪一个0
greedy体现在always找最左边的那一个
## Code
```java=
class Solution {
public int catchMaximumAmountofPeople(int[] team, int dist) {
int p1=0, p2=0, res=0;
for(p1=0; p1<team.length; p1++){
if(team[p1]==0) continue;
while(p2<p1-dist) p2++;
while(p2<p1+dist && p2<team.length && team[p2]==1) p2++;
if(p2<team.length && team[p2]==0){
res++;
p2++;
}
}
return res;
}
}
```
```python=
class Solution:
def catchMaximumAmountofPeople(self, team: List[int], dist: int) -> int:
i, j = 0, 0
ans = 0
for i in range(len(team)):
if team[i]!=1: continue
while j<i-dist: j += 1
while j<=i+dist and j<len(team):
if team[j]==0:
ans += 1
j += 1
break
j += 1
return ans
```