1868.Product of Two Run-Length Encoded Arrays
Problem description:
Run-length encoding is a compression algorithm that allows for an integer array nums
with many segments of consecutive repeated numbers to be represented by a (generally smaller) 2D array encoded
. Each encoded[i] = [vali, freqi]
describes the ith
segment of repeated numbers in nums
where vali
is the value that is repeated freqi
times.
- For example,
nums = [1,1,1,2,2,2,2,2]
is represented by the run-length encoded arrayencoded = [[1,3],[2,5]]
. Another way to read this is “three1
‘s followed by five2
‘s”.
The product of two run-length encoded arrays encoded1
and encoded2
can be calculated using the following steps:
- Expand both
encoded1
andencoded2
into the full arraysnums1
andnums2
respectively. - Create a new array
prodNums
of lengthnums1.length
and setprodNums[i] = nums1[i] * nums2[i]
. - Compress
prodNums
into a run-length encoded array and return it.
You are given two run-length encoded arrays encoded1
and encoded2
representing full arrays nums1
and nums2
respectively. Both nums1
and nums2
have the same length. Each encoded1[i] = [vali, freqi]
describes the ith
segment of nums1
, and each encoded2[j] = [valj, freqj]
describes the jth
segment of nums2
.
Return the product of encoded1
and encoded2
.
Note: Compression should be done such that the run-length encoded array has the minimum possible length.
Example 1:
1 | Input: encoded1 = [[1,3],[2,3]], encoded2 = [[6,3],[3,3]] |
Example 2:
1 | Input: encoded1 = [[1,3],[2,1],[3,2]], encoded2 = [[2,3],[3,3]] |
Constraints:
1 <= encoded1.length, encoded2.length <= 105
encoded1[i].length == 2
encoded2[j].length == 2
1 <= vali, freqi <= 104
for eachencoded1[i]
.1 <= valj, freqj <= 104
for eachencoded2[j]
.- The full arrays that
encoded1
andencoded2
represent are the same length.
Solution:
p
, q
to denote which index of encode we’re processing now
i
, j
denote the left number of that encode element
if the multiplied number is the same as res[-1][0]
, add the number of new multiplied to res[-1][1]
1 | class Solution: |
time complexity: $O()$
space complexity: $O()$
reference:
related problem: