OJ练习第183题——移动机器人

移动机器人

力扣链接:2731. 移动机器人

题目描述


示例

官解思路

当两个机器人相撞时,它们会沿着原本相反的方向移动。由于机器人之间并没有任何区别,相撞可以看做是穿透 ,原本左边的机器人相撞后交换为右边的机器人,原本右边的机器人相撞后交换为左边的机器人,这样一来,两个机器人仿佛没有相撞过。因此,我们可以无视相撞 ,独立计算每个机器人 d 秒后所处的位置。

Java代码

java 复制代码
class Solution {
    static final int MOD = 1000000007;
    public int sumDistance(int[] nums, String s, int d) {
        int n = nums.length;
        long[] pos = new long[n];
        for(int i = 0; i < n; i++) {
            if(s.charAt(i) == 'L') {
                pos[i] = (long) nums[i] - d;
            }else {
                pos[i] = (long) nums[i] + d;
            }
        }
        Arrays.sort(pos);
        long res = 0;
        for(int i = 1; i < n; i++) {
            res += 1L * (pos[i] - pos[i - 1]) * i % MOD * (n - i) % MOD;
            res %= MOD;
        }
        return (int) res;
    }
}
相关推荐
daidaidaiyu2 小时前
一文学习 工作流开发 BPMN、 Flowable
java
SuniaWang3 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34163 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
m0_726965984 小时前
面面面,面面(1)
java·开发语言
xuhaoyu_cpp_java4 小时前
过滤器与监听器学习
java·经验分享·笔记·学习
程序员小假5 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha5 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34166 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
木井巳6 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先