这个题主要就是两个点,一个是当球落在(x1,y1)如果y1为0,说明此时该点已经在最左边了,如果此时该点值为-1,则会被卡在左边,同理,如果y1为grid[i].size()-1,说明此时该点已经在最右边了,如果该点值为1,则会被卡在右边。第二点是,如果球在(x2,y2)时,如果值为1,则要看(x2,y2+1)是否为-1,如果是-1则球会被卡在该点,同理如果值为-1,则要看(x2,y2-1)是否为1.
class Solution {
public:
int finallGrid(vector<vector<int>>& grid,int x,int y){
int m=grid.size();
int n=grid[0].size();
while(x<m){
if(grid[x][y]==1){
if(y==n-1||grid[x][y+1]==-1){
return -1;
}
else{
x++;
y++;
}
}
else{
if(y==0||grid[x][y-1]==1){
return -1;
}
else{
x++;
y--;
}
}
}
return y;
}
vector<int> findBall(vector<vector<int>>& grid) {
vector<int>res;
for(int i=0;i<grid[0].size();i++){
res.push_back(finallGrid(grid,0,i));
}
return res;
}
};