首页/新闻资讯/正文详情

2026-09-25:移动后的最大曼哈顿距离。用go语言,给定一个仅包含 U、D、L、R、_ 这几种字符的字符串 moves。 起始位置是二维坐标 (0, 0)。每读到一个字符,就进行一次移动: U

发布时间:2026/9/26 20:02:11 来源:云帆数科 栏目:资讯中心
2026-09-25:移动后的最大曼哈顿距离。用go语言,给定一个仅包含 U、D、L、R、_ 这几种字符的字符串 moves。 起始位置是二维坐标 (0, 0)。每读到一个字符,就进行一次移动: U
2026-09-25移动后的最大曼哈顿距离。用go语言给定一个仅包含 U、D、L、R、_ 这几种字符的字符串 moves。起始位置是二维坐标 (0, 0)。每读到一个字符就进行一次移动U 表示纵坐标增加 1。D 表示纵坐标减少 1。L 表示横坐标减少 1。R 表示横坐标增加 1。_ 是一个可自由选择的占位符每个下划线都可以单独改成 U、D、L、R 中的任意一种。把字符串中的所有移动都执行完之后会到达某个终点。要求求出这个终点到起始点 (0, 0) 的曼哈顿距离可能达到的最大值。曼哈顿距离的计算方式是对于两个点 (x1, y1) 和 (x2, y2)距离等于 |x1 - x2| |y1 - y2|。1 moves.length 100000。moves 仅由 ‘U’、‘D’、‘L’、‘R’ 和 ‘_’ 组成。输入 moves “L_D_”。输出 4。解释一种最优选择为‘L’(0, 0) - (-1, 0)将 ‘_’ 视为 ‘D’(-1, 0) - (-1, -1)‘D’(-1, -1) - (-1, -2)将 ‘_’ 视为 ‘L’(-1, -2) - (-2, -2)最终位置到原点的曼哈顿距离为 |0 - (-2)| |0 - (-2)| 4。题目来自力扣3968。大体步骤如下一开始把当前位置看作原点也就是横坐标和纵坐标都从 0 开始。同时准备一个计数用来记录遇到了多少个下划线字符。然后从左到右依次读取字符串中的每一个字符。读取过程中只处理已经明确的移动方向而下划线先不决定具体方向。如果当前字符是 L就让横坐标减少 1纵坐标不变。如果当前字符是 R就让横坐标增加 1纵坐标不变。如果当前字符是 D就让纵坐标减少 1横坐标不变。如果当前字符是 U就让纵坐标增加 1横坐标不变。如果当前字符是下划线就暂时不改变横纵坐标只把“自由移动次数”加一。这样完整扫描一遍字符串之后所有非下划线字符造成的最终横纵坐标已经确定下来记作一个基础终点。所有下划线还没有分配方向但它们已经被统计成一个自由移动的总数。接下来考虑这些下划线怎样选择方向才能让最终位置离原点尽可能远。曼哈顿距离等于最终横坐标的绝对值加上最终纵坐标的绝对值。每把一个下划线分配到横坐标方向或者纵坐标方向都可以让它沿着当前坐标绝对值增大的方向移动。也就是说如果当前横坐标是正的就可以把下划线选成 R让横坐标更大如果当前横坐标是负的就选成 L让横坐标更小。纵坐标也是同样道理。因此每一个下划线字符最多能让曼哈顿距离增加 1而且一定可以做到增加 1。所以所有下划线带来的总增益正好等于下划线的数量。于是最终能够达到的最大曼哈顿距离就是非下划线字符已经形成的固定终点到原点的曼哈顿距离再加上所有下划线的数量。用描述性说法就是先算出固定移动造成的横坐标绝对值与纵坐标绝对值之和再把这个和加上自由下划线的个数。以题目中的例子 “L_D_” 来看读到 L横坐标变成 -1纵坐标仍是 0。读到一个下划线自由次数变成 1。读到 D纵坐标变成 -1。又读到一个下划线自由次数变成 2。扫描结束后固定部分到达 (-1, -1)它到原点的曼哈顿距离是 1 1 2。自由下划线一共有 2 个每个都能让距离再增加 1所以最大距离是 2 2 4。这与题目给出的输出一致。这个过程中字符串只会被从头到尾扫描一次。每次处理一个字符时只做一些判断和加减操作不需要嵌套循环也不需要额外保存复杂结构。因此总的时间复杂度是 O(n)其中 n 是字符串 moves 的长度。总的额外空间复杂度是 O(1)因为除了输入字符串本身之外只使用了常数个额外变量来保存横坐标、纵坐标和自由下划线数量。Go完整代码如下packagemainimport(fmt)funcmaxDistance(movesstring)int{x,y,free:0,0,0for_,ch:rangemoves{switchch{caseL:x--caseR:xcaseD:y--caseU:ydefault:free}}returnabs(x)abs(y)free}funcabs(xint)int{ifx0{return-x}returnx}funcmain(){moves:L_D_result:maxDistance(moves)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-defmax_distance(moves:str)-int:x0y0free0forchinmoves:ifchL:x-1elifchR:x1elifchD:y-1elifchU:y1else:free1returnabs(x)abs(y)freeif__name____main__:movesL_D_resultmax_distance(moves)print(result)C完整代码如下#includeiostream#includestring#includecstdlibintmaxDistance(conststd::stringmoves){intx0,y0,free0;for(charch:moves){switch(ch){caseL:--x;break;caseR:x;break;caseD:--y;break;caseU:y;break;default:free;break;}}returnstd::abs(x)std::abs(y)free;}intmain(){std::string movesL_D_;intresultmaxDistance(moves);std::coutresultstd::endl;return0;}

相关推荐

假期值守无人直播,我在告警日志里记下六条碎片
假期值守无人直播,我在告警日志里记下六条碎片

中秋三天假期,替朋友盯了两晚无人直播的值守。屏幕里的直播一帧没跳,倒是中控台的告警日志让我记了不少东西。挑六条出来,都是碎的,但拼起来就是假期值守的全貌。 碎片一:告警去重比告警本身重要。第一晚十一点到十二点… · 2026/9/26 20:02:11

《Qt从零入门系列(十一):Qt事件机制详解——从QEvent到鼠标、键盘与定时器事件》
《Qt从零入门系列(十一):Qt事件机制详解——从QEvent到鼠标、键盘与定时器事件》

Qt作为主流GUI开发框架,其核心交互能力,全都架在事件机制这根骨头上。你平时点的按钮、敲的文本、拖的窗口,背后无一例外,都是操作系统先产生事件,再由Qt封装好,递到应用程序手里。绝大多数场景下&#xff… · 2026/9/26 20:01:56

大模型 API 接入:treerouter 与 Cloudflare AI Gateway 怎么选
大模型 API 接入:treerouter 与 Cloudflare AI Gateway 怎么选

企业在接大模型时,经常遇到两类需求:一类是“少开账户、少对账、用一个入口调很多模型”;另一类是“我已经有了多家模型厂商账号,需要一层边缘网关来做重试、缓存、限流和内容护栏”。前者偏向托管模型市场,后者偏向托… · 2026/9/26 20:01:49

PVRDMA 原理与配置指南:在 vSphere 虚拟机中实现接近原生的 RDMA 性能
PVRDMA 原理与配置指南:在 vSphere 虚拟机中实现接近原生的 RDMA 性能

简介:这份VMware官方发布的技术白皮书,聚焦半虚拟化远程直接内存访问在高性能计算中的落地实践,适合承担集群运维、虚拟化平台架构设计或高速网络调优的工程师参考。资源为单个PDF文档,压缩后约一点零八兆,内容依次覆盖… · 2026/9/26 20:51:27

基于深度学习的自动相册分类系统:从特征提取到聚类落地的完整实战
基于深度学习的自动相册分类系统:从特征提取到聚类落地的完整实战

简介:这份资源是一套基于深度学习的自动相册分类系统完整项目包,面向具备Python基础、希望上手图像分类实战的开发者与学习者。项目以卷积神经网络为核心,覆盖数据预处理、模型训练、验证与预测全流程,可用于区分人物、风景、动物… · 2026/9/26 20:51:27

WorkBuddy入门指南:零基础部署AI漫剧本地工作流
WorkBuddy入门指南:零基础部署AI漫剧本地工作流

1. 这不是“又一个AI视频工具”,而是漫剧工业化流水线的起点WorkBuddy这个词,最近在B站、小红书和知识付费圈子里反复刷屏,但很多人点开教程视频的第一反应是:“这玩意儿真能用?我连Python都没装过,显卡还是… · 2026/9/26 20:51:20

Storm JoinBolt实战:多源实时数据合并与聚合的坑与解法
Storm JoinBolt实战:多源实时数据合并与聚合的坑与解法

在实时计算里,“多数据源合并”这件事看着简单,做起来全是坑。我最早用Storm做实时报表时,数据源有三套:订单系统发kafka、支付网关发kafka、用户服务直接推Thrift接口。业务方要求把这些流按订单号对齐,再实时算出成交… · 2026/9/26 20:51:20

AI漫剧工业化流水线:ComfyUI+minimaxH3实战指南
AI漫剧工业化流水线:ComfyUI+minimaxH3实战指南

1. 这不是“AI画画教程”,而是一套可量产的AI漫剧工业化流水线你点开这个标题,大概率是被“零基础小白也能轻松上手”这句话勾住的。但我要先泼一盆冷水:如果你真信了“轻松上手”,那接下来三天你会反复重启ComfyUI、重装Python、… · 2026/9/26 20:51:07

open-code-review落地实践:让代码审查成为团队信息同步利器
open-code-review落地实践:让代码审查成为团队信息同步利器

代码审查这件事,几乎所有技术团队都承认它重要,但真到项目忙起来,review 就变成了合并分支前的一个勾选动作。我在团队里推行 open-code-review 这套思路差不多一年,最大的体会是:代码审查不是流程负担,而是… · 2026/9/26 20:51:07

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码