[leetCode 丶 20241121] 3248. 矩阵中的蛇
原题: 3248.矩阵中的蛇
描述:
大小为 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
解释:
示例 2:
输入: n = 3, commands = ["DOWN","RIGHT","UP"]
输出: 1
解释:
提示
- 2 <= n <= 10
- 1 <= commands.length <= 100
- commands 仅由 "UP"、"RIGHT"、"DOWN" 和 "LEFT" 组成。
- 生成的测评数据确保蛇不会移动到矩阵的边界外。
个人版答案
执行用时: 2 ms 执行内存消耗: 43.3 M
class Solution {
public int finalPositionOfSnake(int n, List<String> commands) {
int i = 0, j = 0;
for(String cmd: commands){
switch(cmd){
case "UP":
i--;
break;
case "DOWN":
i++;
break;
case "LEFT":
j--;
break;
case "RIGHT":
j++;
break;
default:
break;
}
}
return (i*n)+j;
}
}
优秀解法
执行耗时: 1 ms
class Solution {
public int finalPositionOfSnake(int n, List<String> commands) {
int ans = 0;
for (String c : commands) {
if (c.charAt(0) == 'U') {
ans -= n;
} else if (c.charAt(0) == 'D') {
ans += n;
} else if (c.charAt(0) == 'L') {
--ans;
} else {
++ans;
}
}
return ans;
}
}
个人解题思路与优秀答案解析
题目分析及个人版思路
- ??? 不会出界? 哈哈哈哈哈 看 :
grid[i][j] = (i * n) + j
... hhh 秒了 - n = 2
00 01
10 11
- 发现了么? i,j 移动. 向上移动 i-1, 向下 i + 1. 左右 j 同理
- 哔哔完毕, 看代码.
进阶版思路
虽然快, 但是不如我的好理解啊~
终于有一题能解了
打卡
打卡