本文介绍: 例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 2 并往左移动,下一秒,它们都将占据位置 1,并改变方向。例如,如果一个机器人位于位置 0 并往右移动,另一个机器人位于位置 1 并往左移动,下一秒,第一个机器人位于位置 0 并往左行驶,而另一个机器人位于位置 1 并往右移动。列表的每个元素是一个包含两个元素的列表,第一个元素是机器人的位置,第二个元素是机器人的方向(’L’ 或 ‘R’)。现在下标为 1 的机器人开始往左移动,下标为 2 的机器人开始往右移动。
1.题目
有一些机器人分布在一条无限长的数轴上,他们初始坐标用一个下标从 0 开始的整数数组 nums
表示。当你给机器人下达命令时,它们以每秒钟一单位的速度开始移动。
给你一个字符串 s
,每个字符按顺序分别表示每个机器人移动的方向。'L'
表示机器人往左或者数轴的负方向移动,'R'
表示机器人往右或者数轴的正方向移动。
当两个机器人相撞时,它们开始沿着原本相反的方向移动。
请你返回指令重复执行 d
秒后,所有机器人之间两两距离之和。由于答案可能很大,请你将答案对 109 + 7
取余后返回。
注意:
示例 1:
输入:nums = [-2,0,2], s = "RLL", d = 3 输出:8 解释: 1 秒后,机器人的位置为 [-1,-1,1] 。现在下标为 0 的机器人开始往左移动,下标为 1 的机器人开始往右移动。 2 秒后,机器人的位置为 [-2,0,0] 。现在下标为 1 的机器人开始往左移动,下标为 2 的机器人开始往右移动。 3 秒后,机器人的位置为 [-3,-1,1] 。 下标为 0 和 1 的机器人之间距离为 abs(-3 - (-1)) = 2 。 下标为 0 和 2 的机器人之间的距离为 abs(-3 - 1) = 4 。 下标为 1 和 2 的机器人之间的距离为 abs(-1 - 1) = 2 。 所有机器人对之间的总距离为 2 + 4 + 2 = 8 。
示例 2:
输入:nums = [1,0], s = "RL", d = 2 输出:5 解释: 1 秒后,机器人的位置为 [2,-1] 。 2 秒后,机器人的位置为 [3,-2] 。 两个机器人的距离为 abs(-2 - 3) = 5 。
提示:
2 <= nums.length <= 105
-2 * 109 <= nums[i] <= 2 * 109
0 <= d <= 109
nums.length == s.length
s
只包含'L'
和'R'
。nums[i]
互不相同。
2.解析
主要目的是计算在给定指令重复执行 d 秒后,所有机器人之间两两距离之和。机器人最开始的位置由列表 nums 表示,指令由字符串 s 表示,d 是指令重复执行的次数。
-
首先,创建一个列表
ls
来存储每个机器人的位置和方向。列表的每个元素是一个包含两个元素的列表,第一个元素是机器人的位置,第二个元素是机器人的方向(’L’ 或 ‘R’)。 -
在 d 次循环结束后,计算所有机器人之间的距离。遍历
ls
列表中的每一对机器人,将他们的位置差的绝对值累加到sum
中。
3.python代码
class Solution:
def sumDistance(self, nums: list[int], s: str, d: int) -> int:
l=len(s)
ls = []# 存储机器人位置和方向的列表
sum=0
for i in range(l):
ls.append([nums[i],s[i]])
ls.sort(key=lambda x:x[0])
for i in range(d):
for j in range(l):
if ls[j][1]=="R":
ls[j][0]+=1
else:
ls[j][0]-=1
for k in range(l-1):
if ls[k][0]==ls[k+1][0]:
ls[k][1]="L"
ls[k+1][1]="R"
ls.sort(key=lambda x:x[0])
for i in range(l):
for j in range(i+1,l):
sum+=abs(ls[i][0]-ls[j][0])
return sum
4.运行结果
原文地址:https://blog.csdn.net/Python_1981/article/details/134679871
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_25670.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。