3248.矩阵中的蛇

【LetMeFly】3248.矩阵中的蛇:模拟

力扣题目链接:https://leetcode.cn/problems/snake-in-matrix/

大小为 n x n 的矩阵 grid 中有一条蛇。蛇可以朝 四个可能的方向 移动。矩阵中的每个单元格都使用位置进行标识: grid[i][j] = (i * n) + j

蛇从单元格 0 开始,并遵循一系列命令移动。

给你一个整数 n 表示 grid 的大小,另给你一个字符串数组 commands,其中包括 "UP""RIGHT""DOWN""LEFT"。题目测评数据保证蛇在整个移动过程中将始终位于 grid 边界内。

返回执行 commands 后蛇所停留的最终单元格的位置。

 

示例 1:

输入:n = 2, commands = ["RIGHT","DOWN"]

输出:3

解释:

0 1
2 3
0 1
2 3
0 1
2 3

示例 2:

输入:n = 3, commands = ["DOWN","RIGHT","UP"]

输出:1

解释:

0 1 2
3 4 5
6 7 8
0 1 2
3 4 5
6 7 8
0 1 2
3 4 5
6 7 8
0 1 2
3 4 5
6 7 8

 

提示:

  • 2 <= n <= 10
  • 1 <= commands.length <= 100
  • commands 仅由 "UP""RIGHT""DOWN""LEFT" 组成。
  • 生成的测评数据确保蛇不会移动到矩阵的边界外。

解题方法:模拟

依次遍历指令字符串,依据每个指令的第一个字符判断移动方向:

  • 向上移动:坐标 -= n
  • 向下移动:坐标 += n
  • 向左移动:坐标 -= 1
  • 向右移动:坐标 += 1

初始值坐标为0,移动结束后的坐标即为所求。

  • 时间复杂度$O(len(commands))$
  • 空间复杂度$O(1)$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int finalPositionOfSnake(int n, vector<string>& commands) {
int ans = 0;
for (string& command : commands) {
switch (command[0])
{
case 'U':
ans -= n;
break;
case 'D':
ans += n;
break;
case 'L':
ans--;
break;
default: // 'R'
ans++;
break;
}
}
return ans;
}
};

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from typing import List

class Solution:
def finalPositionOfSnake(self, n: int, commands: List[str]) -> int:
ans = 0
for c in commands:
if c[0] == 'U':
ans -= n
elif c[0] == 'D':
ans += n
elif c[0] == 'L':
ans -= 1
else:
ans += 1
return ans

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public int finalPositionOfSnake(int n, List<String> commands) {
int ans = 0;
for (String c : commands) {
switch (c.charAt(0)) {
case 'U':
ans -= n;
break;
case 'D':
ans += n;
break;
case 'L':
ans--;
break;
default:
ans++;
break;
}
}
return ans;
}
}

Go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

func finalPositionOfSnake(n int, commands []string) (ans int) {
for _, c := range commands {
switch c[0] {
case 'U':
ans -= n;
case 'D':
ans += n;
case 'L':
ans--;
case 'R':
ans++;
}
}
return
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/143957408


3248.矩阵中的蛇
https://blog.letmefly.xyz/2024/11/21/LeetCode 3248.矩阵中的蛇/
作者
Tisfy
发布于
2024年11月21日
许可协议