LCP 63-弹珠游戏
欢迎各位来到「力扣嘉年华」,接下来将为各位介绍在活动中广受好评的弹珠游戏。 N*M
大小的弹珠盘的初始状态信息记录于一维字符串型数组 plate
中,数组中的每个元素为仅由 "O"
、"W"
、"E"
、"."
组成的字符串。其中: - "O"
表示弹珠洞(弹珠到达后会落入洞中,并停止前进); - "W"
表示逆时针转向器(弹珠经过时方向将逆时针旋转 90 度); - "E"
表示顺时针转向器(弹珠经过时方向将顺时针旋转 90 度); - "."
表示空白区域(弹珠可通行)。 游戏规则要求仅能在边缘位置的 空白区域
处(弹珠盘的四角除外)沿 与边缘垂直 的方向打入弹珠,并且打入后的每颗弹珠最多能 前进 num
步。请返回符合上述要求且可以使弹珠最终入洞的所有打入位置。你可以 按任意顺序 返回答案。 注意: -
若弹珠已到达弹珠盘边缘并且仍沿着出界方向继续前进,则将直接出界。 示例 1: > 输入: >num = 4
>plate = ["..E.",".EOW","..W."]
> > 输出:[[2,1]]
> > 解释: > 在 [2,1]
处打入弹珠,弹珠前进 1
步后遇到转向器,前进方向顺时针旋转 90 度,再前进 1 步进入洞中。
![b054955158a99167b8d51da0e22a54da.gif](https://pic.leetcode-
cn.com/1630392649-BoQncz-b054955158a99167b8d51da0e22a54da.gif){:width=”300px”}
示例 2: > 输入: >num = 5
>plate = [".....","..E..",".WO..","....."]
> >
输出:[[0,1],[1,0],[2,4],[3,2]]
> > 解释: > 在 [0,1]
处打入弹珠,弹珠前进 2
步,遇到转向器后前进方向逆时针旋转 90 度,再前进 1 步进入洞中。 > 在 [1,0]
处打入弹珠,弹珠前进 2 步,遇到转向器后前进方向顺时针旋转
90 度,再前进 1 步进入洞中。 > 在 [2,4]
处打入弹珠,弹珠前进 2 步后进入洞中。 > 在 [3,2]
处打入弹珠,弹珠前进 1
步后进入洞中。 ![b44e9963239ae368badf3d00b7563087.gif](https://pic.leetcode-
cn.com/1630392625-rckbdy-b44e9963239ae368badf3d00b7563087.gif){:width=”350px”}
示例 3: > 输入: >num = 3
>plate = [".....","....O","....O","....."]
> >
输出:[]
> > 解释: > 由于弹珠被击中后只能前进 3 步,且不能在弹珠洞和弹珠盘四角打入弹珠,故不存在能让弹珠入洞的打入位置。 提示:
- 1 <= num <= 10^6
- 1 <= plate.length, plate[i].length <= 1000
-plate[i][j]
仅包含 "O"
、"W"
、"E"
、"."
1 | class Solution { |