🌺题目描述
1706. 球会落何处
?🌺解题思路
🌷模拟法
我们采用模拟法,模拟每一个球的运动状态,看看球是如何运动的。
小球运动一共有种两种大情况。
🌼大情况一:挡板一侧是墙壁
当左边是墙壁时,若挡板向左偏,小球此时被卡住,记录为-1。若挡板向右偏,则继续运动。
当右边是墙壁时,若挡板向右偏,小球此时被卡住,记录为-1。若挡板向左偏,则继续运动。
🌼大情况二:挡板不靠近墙壁
若两侧都为右,则向右运动,若两侧都为左,则向左运动。若两侧相等,则被卡住,记录为-1.
?🌺详细代码
class Solution {
public:
vector<int> findBall(vector<vector<int>>& grid) {
int row = grid.size();//行数
int column= grid[0].size();//列数
vector<int> res(column, -1);
for(int i = 0;i < column; ++i)
{
int j = 0;
int index = i;
while( j < row && index >= 0 && index < column)
{
if(grid[j][index] == 1 && index + 1 < column && grid[j][index+1] == 1)
{
++index;
++j;
}
else if(grid[j][index] == -1 && index - 1 >= 0 && grid[j][index-1] == -1)
{
--index;
++j;
}
else break;
}
if(j == row) res[i] = index;
}
return res;
}
};
🌺每日金句
??学习永远不晚? ——? 高尔基
????????本人不才,如有错误,或有更好的解法,欢迎各位大佬在评论区讨论。如果对你有帮助的话还请点赞,收藏,关注哦!
|