LeetCode 2833.距离原点最远的点:计数

【LetMeFly】2833.距离原点最远的点:计数

力扣题目链接:https://leetcode.cn/problems/furthest-point-from-origin/

给你一个长度为 n 的字符串 moves ,该字符串仅由字符 'L''R''_' 组成。字符串表示你在一条原点为 0 的数轴上的若干次移动。

你的初始位置就在原点(0),第 i 次移动过程中,你可以根据对应字符选择移动方向:

  • 如果 moves[i] = 'L'moves[i] = '_' ,可以选择向左移动一个单位距离
  • 如果 moves[i] = 'R'moves[i] = '_' ,可以选择向右移动一个单位距离

移动 n 次之后,请你找出可以到达的距离原点 最远 的点,并返回 从原点到这一点的距离

示例 1:

复制代码
输入:moves = "L_RL__R"
输出:3
解释:可以到达的距离原点 0 最远的点是 -3 ,移动的序列为 "LLRLLLR" 。

示例 2:

复制代码
输入:moves = "_R__LL_"
输出:5
解释:可以到达的距离原点 0 最远的点是 -5 ,移动的序列为 "LRLLLLL" 。

示例 3:

复制代码
输入:moves = "_______"
输出:7
解释:可以到达的距离原点 0 最远的点是 7 ,移动的序列为 "RRRRRRR" 。

提示:

  • 1 <= moves.length == n <= 50
  • moves 仅由字符 'L''R''_' 组成

解题方法:计数

凡是LR皆为固定,凡是其他皆自由。

因此两个变量统计:

  1. LR作用下距离起点的diff;
  2. 有多少自由移动的步数。

如果diff大于0(在起点之右),则自由步数全部向右移动;否则全部向左移动就好了。

此外,也可以不判断diff是否大于零,直接返回 a b s ( d i f f ) + f l e x abs(diff)+flex abs(diff)+flex就好了。

  • 时间复杂度 O ( l e n ( m o v e s ) ) O(len(moves)) O(len(moves))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
cpp 复制代码
/*
 * @LastEditTime: 2026-04-24 21:00:44
 */
class Solution {
public:
    int furthestDistanceFromOrigin(string moves) {
        int flex = 0, diff = 0;
        for (char c : moves) {
            switch (c)
            {
            case 'L':
                diff--;
                break;
            case 'R':
                diff++;
                break;
            default:
                flex++;
            }
        }
        return diff > 0 ? diff + flex : flex - diff;
    }
};
Python
python 复制代码
'''
LastEditTime: 2026-04-24 21:02:38
'''
class Solution:
    def furthestDistanceFromOrigin(self, moves: str) -> int:
        flex = diff = 0
        for c in moves:
            if c == 'L':
                diff -= 1
            elif c == 'R':
                diff += 1
            else:
                flex += 1
        return flex + diff if diff > 0 else flex - diff
Java
java 复制代码
/*
 * @LastEditTime: 2026-04-24 21:07:01
 */
// java14+
class Solution {
    public int furthestDistanceFromOrigin(String moves) {
        int flex = 0, diff = 0;
        for (int i = 0; i < moves.length(); i++) {
            switch (moves.charAt(i)) {
                case 'L' -> diff--;
                case 'R' -> diff++;
                default -> flex++;
            }
        }
        return diff > 0 ? flex + diff : flex - diff;
    }
}
Go
go 复制代码
/*
 * @LastEditTime: 2026-04-24 21:25:20
 */
package main

func furthestDistanceFromOrigin(moves string) int {
    flex, diff := 0, 0
    for _, c := range moves {
        switch byte(c) {
        case 'L':
            diff--
        case 'R':
            diff++
        default:
            flex++
        }
    }
    if diff > 0 {
        return diff + flex
    }
    return flex - diff
}
Rust - abs
rust 复制代码
/*
 * @LastEditTime: 2026-04-24 23:09:59
 */
impl Solution {
    pub fn furthest_distance_from_origin(moves: String) -> i32 {
        let mut diff: i32 = 0;
        let mut flex: i32 = 0;
        for c in moves.chars() {
            match c {
                'L' => diff -= 1,
                'R' => diff += 1,
                _ => flex += 1,
            }
        }
        diff.abs() + flex
    }
}
Rust - if-else
rust 复制代码
/*
 * @LastEditTime: 2026-04-24 23:07:48
 */
impl Solution {
    pub fn furthest_distance_from_origin(moves: String) -> i32 {
        let mut diff = 0;
        let mut flex = 0;
        for c in moves.chars() {
            match c {
                'L' => diff -= 1,
                'R' => diff += 1,
                _ => flex += 1,
            }
        }
        if diff > 0 {
            diff + flex
        } else {
            flex - diff
        }
    }
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

相关推荐
To_OC12 小时前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
05Kevin1 天前
lk每日冒险题--数据结构6.27
算法
To_OC2 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安2 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者2 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent
kisshyshy2 天前
从递归到迭代,一文吃透二叉树的核心知识与 JavaScript 实现
javascript·算法·代码规范
To_OC3 天前
LC 49 字母异位词分组:想到哈希表很简单,选对 key 才是精髓
javascript·算法·leetcode