3618. Split Array by Prime Indices
Description
You are given an integer array nums
.
Split nums
into two arrays A
and B
using the following rule:
- Elements at prime indices in
nums
must go into arrayA
. - All other elements must go into array
B
.
Return the absolute difference between the sums of the two arrays: |sum(A) - sum(B)|
.
Note: An empty array has a sum of 0.
Example 1:
Input: nums = [2,3,4]
Output: 1
Explanation:
- The only prime index in the array is 2, so
nums[2] = 4
is placed in arrayA
. - The remaining elements,
nums[0] = 2
andnums[1] = 3
are placed in arrayB
. sum(A) = 4
,sum(B) = 2 + 3 = 5
.- The absolute difference is
|4 - 5| = 1
.
Example 2:
Input: nums = [-1,5,7,0]
Output: 3
Explanation:
- The prime indices in the array are 2 and 3, so
nums[2] = 7
andnums[3] = 0
are placed in arrayA
. - The remaining elements,
nums[0] = -1
andnums[1] = 5
are placed in arrayB
. sum(A) = 7 + 0 = 7
,sum(B) = -1 + 5 = 4
.- The absolute difference is
|7 - 4| = 3
.
Constraints:
1 <= nums.length <= 105
-109 <= nums[i] <= 109
Solutions
Solution 1: Sieve of Eratosthenes + Simulation
We can use the Sieve of Eratosthenes to preprocess all prime numbers in the range \([0, 10^5]\). Then we iterate through the array \(\textit{nums}\). For \(\textit{nums}[i]\), if \(i\) is a prime number, we add \(\textit{nums}[i]\) to the answer; otherwise, we add \(-\textit{nums}[i]\) to the answer. Finally, we return the absolute value of the answer.
Ignoring the preprocessing time and space, the time complexity is \(O(n)\), where \(n\) is the length of the array \(\textit{nums}\), and the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|