题源:LeetCode
1706. 球会落何处
class Solution {
public:
vector<int> findBall(vector<vector<int>>& grid) {
//思想主要在循环上,真的妙
int n = grid[0].size();
vector<int> ans(n, -1);
for(int j = 0; j < n; j++){
int col = j;//球的初始列
for(auto &row : grid){
int dir = row[col];//挡板方向
col += dir;//初始列左右移动
if(col < 0 || col == n || row[col] != dir){
// row[col] != dir 移动后同一行格子的挡板方向与之前格子的挡板方向是否一致
col = -1;
break;
}
}
if(col >= 0)//成功到达底部
ans[j] = col;
}
return ans;
}
};