Leetcode 1706 ——球会落何处

目录

解题思路:

代码:


解题思路:

   我们依次遍历每一个球,判断它们的最终位置,小球从上往下落,当小球所在方格的挡板往右偏,并且它右边放格的挡板也往右偏,它就会掉落的下一层,并且列下标也会加一,同理,当小球所在方格的挡板往左偏,并且它左边放格的挡板也往左偏,它就会掉落的下一层,并且列下标也会减一。还有一种情况是当,小球在第一列,挡板不能往左偏,在最后一列挡板不能往右偏,否则小球会卡住。

代码:

int m=grid.size(),n=grid[0].size();//得出几行几列
      vector<int> v;//存放结果的数组
      int x=0,j;
      for(int i=0;i<grid[0].size();i++){//遍历每个球
          x=0,j=i;
          while(x<m){//循环的截至条件是,小球到达最后一行
          if(j == 0 && grid[x][0] == -1 ||  j == n-1 && grid[x][n-1] == 1){
           break;
          }//如果小球在第一列并且挡板向右,小球则会卡住,同理,如果小球在最后一列,挡板也会卡住。
          if(grid[x][j] == 1 && grid[x][j+1] == 1){//小球所在方格的挡板向右放,它右侧方格也向右放则小球落入了下一层。
              x++;
              j++;
          }else if(grid[x][j] == -1 && grid[x][j-1] == -1){//小球所在方格的挡板向左放,它左侧方格也向右放则小球落入了下一层。
              x++;
              j--;
          }else{//其他情况下会被卡住
              break;
          }
      }
       if(x==m){
              v.push_back(j);//插入此时小球所在的列下标
          }else{
              v.push_back(-1);
          }
    }
    return v;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值