1706. 球会落何处(模拟算法)
1706. 球会落何处(模拟算法)

#### 审题
对于小球是否能继续向下走取决于两边的挡板**是否是同方向**,并且n为1时是肯定下不去的。基于这种想法可以有两种方向解题。
1、dfs搜索
2、模拟
我再来看数据范围

如果用dfs则需要注意是否超时,比较麻烦。所以我们选择模拟
#### 解题
1、当两边挡板均向右时,小球通过,小球起步点位置s加一,走过行数加一
2、当两边挡板均向左时,小球通过,小球起步点位置s减一,走过行数加一
3、遍历全部行后,去比较走过行数和总行数是否相等即可,不相等则不通过,相等则通过,且出来那一列对应坐标为s。
**注意:向左向右均不能过界**
#### 代码
思路捋清楚了,就可以撸代码了。
```c++
class Solution {
public:
vector<int> findBall(vector<vector<int>>& grid) {
int n = grid[0].size();
int m = grid.size();
vector<int>ans;
for(int i=0;i<n;i++){
int s=i;//球的起点
int count=0;//走过行数
for(int j=0;j<m;j++){
if(grid[j][s]==1&&s<n-1&&grid[j][s+1]==1){count++;s++;continue;}
if(grid[j][s]==-1&&n!=1&&s-1>=0&&grid[j][s-1]==-1){count++;s--;continue;}
}
if(count==m)ans.push_back(s);
else ans.push_back(-1);
}
return ans;
}
};
```
结果不出所料,直接秒杀了。

#### 完结撒花
哈哈,至此我们解决了今天的每日一题。
我的力扣主页:[https://leetcode.cn/u/nan-wan-bu-qiu-39/](https://leetcode.cn/u/nan-wan-bu-qiu-39/)