依次从上到下模拟每个球的运动,对于相同层,球运动之前和运动之后的格子方向必须相同,球才能往下移动。
class Solution {
public:
vector<int> findBall(vector<vector<int>>& grid) {
int m = grid.size(), n = grid[0].size();
vector<int> ans(n);
for (int i = 0; i < n; i++) {
int x = i;
for (int j = 0; j < m; j++) {
int dir = grid[j][x];
x += dir;
if (x < 0 || x >= n || dir != grid[j][x]) {
x = - 1;
break;
}
}
ans[i] = x;
}
return ans;
}
};