Leetcode每日一题 —— 2833. 距离原点最远的点

2026-04-29 10:152阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:
力扣 LeetCode

2833. 距离原点最远的点 - 力扣(LeetCode)

2833. 距离原点最远的点 - 给你一个长度为 n 的字符串 moves ,该字符串仅由字符 'L'、'R' 和 '_' 组成。字符串表示你在一条原点为 0 的数轴上的若干次移动。 你的初始位置就在原点(0),第 i 次移动过程中,你可以根据对应字符选择移动方向: * 如果 moves[i] = 'L' 或 moves[i] = '_' ,可以选择向左移动一个单位距离 * 如果 moves[i] = 'R' 或 moves[i] = '_' ,可以选择向右移动一个单位距离 移动 n...


思路

中文题目表述有点混乱,实际意思是下划线 _ 出现的地方要选择 L 或者 R,使得移动后距离原点最远。

很明显在这一维空间上移动多远只和 LR 的数量有关,谁多我们帮谁!

LR 的出现数量分别计数即可,谁多就把下划线的数量交给他。


代码

class Solution { public: int furthestDistanceFromOrigin(string moves) { // 题目有点混乱,意思是 '_' 这个地方要选择一个移动方向,使得移动后距离原点最远 // 很明显只和 L 和 R 的数量有关,谁多我们帮谁! int numU=0,numL=0,numR=0; for(char c:moves){ switch(c){ case 'L': numL++; break; case 'R': numR++; break; case '_': numU++; } } if(numL>=numR){ return numL+numU-numR; }else{ return numR+numU-numL; } } }; 网友解答:


--【壹】--:

class Solution: def furthestDistanceFromOrigin(self, moves: str) -> int: ctl = ctr = ct_ = 0 for c in moves: if c == 'L': ctl += 1 elif c == 'R': ctr += 1 else: ct_ += 1 return abs(ctr - ctl) + ct_


--【贰】--:

嘻嘻~窝也写了个Py版的~

class Solution: def furthestDistanceFromOrigin(self, moves: str) -> int: l, r = sum(1 for i in moves if i == "L"), sum(1 for i in moves if i == "R") return len(moves) - l - r + abs(l - r)


--【叁】--:

简单题。_统一安排就好。

class Solution { public: int furthestDistanceFromOrigin(string moves) { auto Move = [&](char dir) -> int { int res = 0; for(auto it : moves) { if(it == '_') { it = dir; } if(it == 'L') { res -= 1; } else { res += 1; } } return abs(res); }; return max(Move('L'),Move('R')); } };


class Solution: def furthestDistanceFromOrigin(self, moves: str) -> int: def Move(dir: str) -> int: res = 0 for s in moves: if s == '_': s = dir if s == 'L': res -= 1 elif s == 'R': res += 1 return abs(res) return max(Move('L'),Move('R'))


func furthestDistanceFromOrigin(moves string) int { Move := func(dir byte) int { res := 0 for i := 0; i < len(moves); i++ { c := moves[i] if c == '_' { c = dir } if c == 'L' { res -= 1 } else if c == 'R' { res += 1 } } if res < 0 { return -res } return res } return max(Move('L'),Move('R')) }