mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
54 lines
2.5 KiB
Markdown
54 lines
2.5 KiB
Markdown
|
欢迎各位来到「力扣嘉年华」,接下来将为各位介绍在活动中广受好评的弹珠游戏。
|
|||
|
|
|||
|
`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"`、`"."`
|