首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2025-03-20:矩阵中的蛇。用go语言,给定一个大小为 n x n 的矩阵 grid,其中有一条蛇。蛇可以向四个方向移动:

2025-03-20:矩阵中的蛇。用go语言,给定一个大小为 n x n 的矩阵 grid,其中有一条蛇。蛇可以向四个方向移动:

作者头像
福大大架构师每日一题
发布2025-03-20 18:50:01
发布2025-03-20 18:50:01
2320
举报

2025-03-20:矩阵中的蛇。用go语言,给定一个大小为 n x n 的矩阵 grid,其中有一条蛇。蛇可以向四个方向移动:上、右、下和左。矩阵的每个单元格由其位置标识,公式为 grid[i][j] = (i * n) + j。

蛇从单元格 0 开始,并根据给定的一系列命令进行移动。您将获得一个整数 n,表示矩阵的大小,以及一个字符串数组 commands,其中包含指令如 "UP"、"RIGHT"、"DOWN" 和 "LEFT"。题目保证在整个移动过程中蛇始终留在矩阵边界内。

请编写代码,返回执行完所有指令后,蛇最终停留在的单元格位置。

2 <= n <= 10。

1 <= commands.length <= 100。

commands 仅由 "UP"、"RIGHT"、"DOWN" 和 "LEFT" 组成。

生成的测评数据确保蛇不会移动到矩阵的边界外。

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

输出:3。 解释:

题目来自leetcode3248。

大体步骤如下:

1.初始化一个变量 ans 为 0,用于表示蛇在矩阵中的位置。开始位置为单元格 0。

2.对于提供的每一个指令 c

  • • 如果指令以 'U' 开头,表示向上移动,即蛇的位置减去当前行数 n。
  • • 如果指令以 'D' 开头,表示向下移动,即蛇的位置加上当前行数 n。
  • • 如果指令以 'L' 开头,表示向左移动,即蛇的位置减1。
  • • 如果指令以 'R' 开头,表示向右移动,即蛇的位置加1。

3.返回最终的位置 ans

总体而言,对每个指令进行处理,最后返回蛇的最终停留位置。时间复杂度为 O(n),其中 n 为指令的数量,额外空间复杂度为 O(1),因为只使用了常数级的额外空间。

Go完整代码如下:

代码语言:javascript
复制
package main

import (
    "fmt"
)

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

func main() {
    n := 2
    commands := []string{"RIGHT", "DOWN"}
    result := finalPositionOfSnake(n, commands)
    fmt.Println(result)
}

Python完整代码如下:

代码语言:javascript
复制
# -*-coding:utf-8-*-

deffinal_position_of_snake(n, commands):
    ans = 0
    for c in commands:
        if c[0] == 'U':
            ans -= n
        elif c[0] == 'D':
            ans += n
        elif c[0] == 'L':
            ans -= 1
        elif c[0] == 'R':
            ans += 1
    return ans

if __name__ == "__main__":
    n = 2
    commands = ["RIGHT", "DOWN"]
    result = final_position_of_snake(n, commands)
    print(result)

我们相信 Go 语言和算法为普通开发者提供了强有力的“面试利器”,并致力于分享全面的编程知识。在这里,您可以找到最新的 Go 语言教程、算法解析、提升面试竞争力的秘籍以及行业动态。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Python完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档