算法刷题打卡第88天:字母板上的路径
字母板上的路径
难度:中等
我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。
在本题里,字母板为board = ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"],如下所示。

我们可以按下面的指令规则行动:
- 如果方格存在,
'U'意味着将我们的位置上移一行; - 如果方格存在,
'D'意味着将我们的位置下移一行; - 如果方格存在,
'L'意味着将我们的位置左移一列; - 如果方格存在,
'R'意味着将我们的位置右移一列; '!'会把在我们当前位置(r, c)的字符board[r][c]添加到答案中。
(注意,字母板上只存在有字母的位置。)
返回指令序列,用最小的行动次数让答案和目标 target 相同。你可以返回任何达成目标的路径。
示例 1:
输入:target = "leet"
输出:"DDR!UURRR!!DDD!"
示例 2:
输入:target = "code"
输出:"RR!DDRR!UUL!R!"
哈希表
思路:
- 根据字符输入,可以计算出对应的位置
- 根据位置左右和上下移动即可
- 需注意,移动到z只能先左右再上下,从z移动出去只能先上下再左右
复杂度分析:
- 时间复杂度: O(n)O(n)O(n),nnn 为 targettargettarget 长度
- 空间复杂度: O(c)O(c)O(c),ccc 为 262626。
class Solution:def alphabetBoardPath(self, target: str) -> str:word_dicts = dict()board = ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]for x, i in enumerate(board):for y, j in enumerate(i):word_dicts[j] = [x, y]now_position = [0, 0]res = ""def lr_move(target_position, now_position, res):if target_position[1] - now_position[1] >= 0:res += 'R' * abs(target_position[1] - now_position[1])else:res += 'L' * abs(target_position[1] - now_position[1])return resdef ud_move(target_position, now_position, res):if target_position[0] - now_position[0] >= 0:res += 'D' * abs(target_position[0] - now_position[0])else:res += 'U' * abs(target_position[0] - now_position[0])return resfor i in target:target_position = word_dicts[i]if i != 'z':res = ud_move(target_position, now_position, res)res = lr_move(target_position, now_position, res)else: res = lr_move(target_position, now_position, res)res = ud_move(target_position, now_position, res)res += "!"now_position = target_positionreturn res
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/alphabet-board-path
相关文章:
算法刷题打卡第88天:字母板上的路径
字母板上的路径 难度:中等 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "…...
UVa The Morning after Halloween 万圣节后的早晨 双向BFS
题目链接:The Morning after Halloween 题目描述: 给定一个二维矩阵,图中有障碍物和字母,你需要把小写字母移动到对应的大写字母位置,不同的小写字母可以同时移动(上下左右四个方向或者保持不动 ࿰…...
Connext DDS属性配置参考大全(3)
Transport传输dds.participant.logging.time_based_logging.process_received_messagedds.participant.logging.time_based_logging.process_received_message.timeout...
Docker-安装Jenkins-使用jenkins发版Java项目
文章目录0.前言环境背景1.操作流程1.1前期准备工作1.1.1环境变量的配置1.2使用流水线的方式进行发版1.2.1新建流水线任务1.2.2流水线操作工具tools步骤stages步骤1:拉取代码编译步骤2:发送文件并启动0.前言 学海无涯,旅“途”漫漫,“途”中小记ÿ…...
spring 中的 Bean 是否线程安全
文章目录结论1、spring中的Bean从哪里来?2、spring中什么样的Bean存在线程安全问题?3、如何处理spring Bean的线程安全问题?结论 其实,Spring 中的 Bean 是否线程安全,其实跟 Spring 容器本身无关。Spring框架中没有提…...
微电网两阶段鲁棒优化经济调度方法[3]【升级优化版本】(Matlab代码实现)
💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…...
C++入门教程||C++ 数据类型||C++ 变量类型
C 数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。 您可能需要存储各种数据类型(比如字符型、宽字符型、整型…...
【visio使用技巧】图片导出pdf时去掉多余空白
问题 在visio导出pdf格式的图片时,往往会存在多余的白边,如下图所示: 解决方法 依次点击:菜单栏→文件→选项→自定义功能区→勾选“开发工具”→确定。 依次点击菜单栏→开发工具→显示ShapeSheet→页→Print Properties→将…...
Rust语言之Option枚举类型
概述 Option是Rust语言设计中最重要的枚举类型之一,它编码了其它语言中空值与非空值的概念,差异在于,Rust不会允许你像其它语言一样以非空值的方式来使用一个空值,这避免了很多错误。Option在标准库中的定义如下: pu…...
基于TimeQuest时序优化原理和方法
💡 回顾基于RTL逻辑时序优化的基本思路,在关键路径中插入寄存器来优化时序 分析最坏路径 通过前面对TimeQuest软件的理解,基本上可以找到关键路径,此文章主要对关键路径时序进行优化,使设计达到时序要求,以…...
LeetCode第332场周赛
2023.2.12LeetCode第332场周赛 6354. 找出数组的串联值 思路 双指针模拟,两个指针相遇的时候要特判 算法 class Solution { public:long long findTheArrayConcVal(vector<int>& nums) {long long ans 0;int i 0, j nums.size() - 1;while (i <…...
2023-2-12刷题情况
字母板上的路径 题目描述 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。 我们可以按下面的指令规则行动…...
拉普拉斯矩阵
拉普拉斯算子 Δff(xi1,yj)f(xi−1,yj)f(xi,yj1)f(xi,yj−1)−4f(xi,yj)∑(k,l)∈N(i,j)(f(xk,yl)−f(xi,yj))\begin{aligned} \Delta f & f\left(x_{i1}, y_j\right) f\left(x_{i-1},y_j\right) f\left(x_i,y_{j1}\right)f\left(x_i,y_{j-1}\right) - 4f\left(x_i,y_j\r…...
Top-1错误率、Top-5错误率等常见的模型算法评估指标解析
Top-1 错误率:指预测输出的概率最高的类别与人工标注的类别相符的准确率,就是你预测的label取最后概率向量里面最大的那一个作为预测结果,如过你的预测结果中概率最大的那个分类正确,则预测正确,否则预测错误。比如预测…...
Urho3D 容器类型
Urho3D实现了自己的字符串类型和模板容器,而不是使用STL。其基本原理如下: 在某些情况下提高了性能,例如使用PODVector类时。保证字符串和容器的二进制大小,以允许例如嵌入Variant对象内。减少了编译时间。直接命名和实现&#x…...
C语言学习笔记(四): 循环结构程序设计
while语句 定义 While语句是C语言中的循环语句,它按条件循环执行语句,直到条件不满足为止 语法格式如下: while(condition) {//循环体内容; }使用实例 求123…100 include <stdio.h> int main(){int i 1, sum 0;while (i<100){sum i …...
02 OpenCV图像通道处理
1 通道提取与合并 在数字图像处理中,图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道,每个通道表示相应颜色的亮度。这种方式是最常…...
微信小程序图书馆座位预约管理系统
开发工具:IDEA、微信小程序服务器:Tomcat9.0, jdk1.8项目构建:maven数据库:mysql5.7前端技术:vue、uniapp服务端技术:springbootmybatis本系统分微信小程序和管理后台两部分,项目采用…...
有限元分析学习一
系列文章目录 有限元分析学习一 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、有限元方法的简单介绍1.1 有限元的基础概念1.2 有限元软件发展历史1.3 有限元软件二、弹性力学的简单介绍2.1.…...
android avb2.0 总结
1、android vbmeta结构深入解析 2、android libavb深入解读 看完结构与代码,进一步了解了avb 比如vbmeta的结构、5种描述符、hash公钥签名存储位置 多层vbmeta结构、无vbmeta分区的验证逻辑、hash计算对比、公钥验证、签名验签、5种描述符体的处理 但是还有一些问题没有解决 如…...
Fooocus终极指南:零门槛AI图像生成神器,5分钟从安装到创作
Fooocus终极指南:零门槛AI图像生成神器,5分钟从安装到创作 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus 在AI图像生成领域,复杂的技术参数和繁琐的调整过程…...
3步快速上手RobotHelper:安卓自动化脚本框架新手指南
3步快速上手RobotHelper:安卓自动化脚本框架新手指南 【免费下载链接】RobotHelper 安卓游戏自动化脚本框架|Automated script for Android games 项目地址: https://gitcode.com/gh_mirrors/ro/RobotHelper 你是否想要开发安卓游戏自动化脚本,却…...
Linux桌面美化:pixie-cursors鼠标指针主题安装与定制指南
1. 项目概述:一个为Linux桌面注入灵魂的鼠标指针主题如果你和我一样,是一个长期在Linux桌面环境下工作的开发者或爱好者,那么对于系统美化的追求,可能从未停止过。从窗口管理器到终端配色,从图标包到壁纸,每…...
别再写循环了!ABAP SQL聚合函数COUNT/AVG/MAX实战指南,5分钟搞定数据统计
ABAP SQL聚合函数实战:告别低效循环,5分钟掌握高阶统计技巧 每次看到ABAP报表里那些嵌套三层的LOOP和SORT语句,我的血压就会悄悄升高。上周review同事代码时,发现一个统计物料库存的报表竟然用了三个嵌套循环——外层遍历工厂、中…...
NVIDIA aicr:AI容器运行时核心原理与生产部署指南
1. 项目概述:当AI遇见容器运行时如果你在AI开发或者高性能计算领域摸爬滚打过一段时间,大概率会遇到一个让人头疼的问题:如何高效、稳定地管理那些“胃口”巨大、依赖复杂的AI工作负载?从训练一个大型语言模型到运行一个实时的计算…...
告别驱动开发:手把手教你用himm工具在用户空间玩转Hi3516的GPIO
用户空间高效操控Hi3516 GPIO:himm工具实战指南 在嵌入式开发领域,传统的内核驱动开发往往需要经历漫长的编译、加载和调试周期。对于快速硬件验证和原型开发而言,这种开发模式显得过于笨重。海思Hi3516平台提供的himm工具,为开发…...
为Dify扩展AI图表与文档生成能力:微服务架构实战指南
1. 项目概述:为Dify打造专属的AI图表与文档生成工具箱如果你正在使用Dify构建自己的AI应用,并且希望让AI不仅能生成文字,还能直接输出流程图、思维导图、PPT甚至试卷,那么这个项目就是为你准备的。brightwang/dify-tool-service是…...
别再手动折腾了!用Stack Builder一键搞定PostGIS 2.1 for PostgreSQL 9.2 (Windows 64位)
告别繁琐配置:用Stack Builder轻松部署PostGIS空间数据库 在Windows环境下配置PostgreSQL的空间扩展PostGIS,传统方式往往需要手动下载安装包、配置环境变量、执行SQL脚本等一系列操作。对于刚接触空间数据库的开发者来说,这个过程既耗时又容…...
信息学奥赛刷题实战:用C++搞定OpenJudge NOI 1.4 09题(判断整除)的四种思路
信息学奥赛刷题实战:用C搞定OpenJudge NOI 1.4 09题(判断整除)的四种思路 在信息学奥赛(NOI)和OpenJudge等编程竞赛平台上,一道看似简单的题目往往隐藏着多种解题思路。今天,我们就以OpenJudge …...
计算机人别卷开发了!这个方向让我毕业年入_20_万,兼职还能赚8K
一、我那 “躺赢” 的同学:从找不到工作到 offer 拿到手软 去年毕业季,我们班一半人在死磕 LeetCode 求开发岗,月薪 8K 都要抢破头;而隔壁宿舍的阿凯,没卷一道算法题,却拿到了 3 家企业的安全岗 offer&…...
