Some robots are standing on an infinite number line with their initial coordinates given by a 0-indexed integer array nums and will start moving once given the command to move. The robots will move a unit distance each second.
You are given a string s denoting the direction in which robots will move on command. 'L' means the robot will move towards the left side or negative side of the number line, whereas 'R' means the robot will move towards the right side or positive side of the number line.
If two robots collide, they will start moving in opposite directions.
Return the sum of distances between all the pairs of robots d seconds after the command. Since the sum can be very large, return it modulo 109 + 7.
Note:
i and j, pair (i,j) and pair (j,i) are considered the same pair.
Example 1:
Input: nums = [-2,0,2], s = "RLL", d = 3 Output: 8 Explanation: After 1 second, the positions are [-1,-1,1]. Now, the robot at index 0 will move left, and the robot at index 1 will move right. After 2 seconds, the positions are [-2,0,0]. Now, the robot at index 1 will move left, and the robot at index 2 will move right. After 3 seconds, the positions are [-3,-1,1]. The distance between the robot at index 0 and 1 is abs(-3 - (-1)) = 2. The distance between the robot at index 0 and 2 is abs(-3 - 1) = 4. The distance between the robot at index 1 and 2 is abs(-1 - 1) = 2. The sum of the pairs of all distances = 2 + 4 + 2 = 8.
Example 2:
Input: nums = [1,0], s = "RL", d = 2 Output: 5 Explanation: After 1 second, the positions are [2,-1]. After 2 seconds, the positions are [3,-2]. The distance between the two robots is abs(-2 - 3) = 5.
Constraints:
2 <= nums.length <= 105-2 * 109 <= nums[i] <= 2 * 1090 <= d <= 109nums.length == s.length s consists of 'L' and 'R' onlynums[i] will be unique.In this approach, we simulate the movement of each robot over time, while handling collisions. We'll update positions step by step, checking for collisions and reversing directions when needed. Finally, we'll calculate the sum of distances between each pair of robots after d seconds.
Calculate the new position of each robot after d seconds by adding or subtracting d from their initial positions based on the direction. Sort the positions and calculate the sum of the pairwise distances.
C++
Java
C#
JavaScript
Time Complexity: O(n^2) due to pairwise distance calculation.
Space Complexity: O(n) for storing positions.
Instead of directly computing pairwise distances, optimize by leveraging mathematical properties of differences and precomputed sums. This will avoid the O(n^2) complexity.
Sort the positions and use a prefix sum to calculate the total distance efficiently: for each position, the distance contribution is based on how many times it gets added or subtracted in subsequent pairs.
C++
Java
C#
JavaScript
Time Complexity: O(n log n) due to sorting.
Space Complexity: O(n) for the positions array.
| Approach | Complexity |
|---|---|
| Simulation Based Approach | Time Complexity: O(n^2) due to pairwise distance calculation. |
| Optimized Pairwise Calculation | Time Complexity: O(n log n) due to sorting. |
Robot Bounded in Circle - Math & Geometry - Leetcode 1041 - Python • NeetCode • 44,021 views views
Watch 9 more video solutions →Practice Movement of Robots with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor