大小为
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"
组成。- 生成的测评数据确保蛇不会移动到矩阵的边界外。
最后的公式可以推导一个3*3的矩阵
x控制上下 y控制左右。
假设结束后为1,1(中间 4)
0 1 2
3 4 5
6 7 9
那么公式恰好为x*n+y;
public int finalPositionOfSnake(int n, List<String> commands) {
int [][] map = new int[n][n];
int x = 0;
int y = 0;
for(String location : commands){
if(location.equals("UP")){
//上
x--;
}else if(location.equals("DOWN")){
//下
x++;
}else if(location.equals("LEFT")){
//左
y--;
}else{
//右
y++;
}
}
return x*n+y;
}
z