Skip to content

Commit 42dbd7f

Browse files
authored
Create product-of-two-run-length-encoded-arrays.cpp
1 parent 51e2db9 commit 42dbd7f

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Time: O(m + n)
2+
// Space: O(1)
3+
4+
class Solution {
5+
public:
6+
vector<vector<int>> findRLEArray(vector<vector<int>>& encoded1, vector<vector<int>>& encoded2) {
7+
vector<vector<int>> result;
8+
for (int i = 0, j = 0, remain1 = 0, remain2 = 0;
9+
(remain1 || i < size(encoded1)) && (remain2 || j < size(encoded2));) {
10+
if (!remain1) {
11+
remain1 = encoded1[i++][1];
12+
}
13+
if (!remain2) {
14+
remain2 = encoded2[j++][1];
15+
}
16+
int cnt = min(remain1, remain2);
17+
remain1 -= cnt;
18+
remain2 -= cnt;
19+
if (!empty(result) && result.back()[0] == encoded1[i - 1][0] * encoded2[j - 1][0]) {
20+
result.back()[1] += cnt;
21+
} else {
22+
result.push_back({encoded1[i - 1][0] * encoded2[j - 1][0], cnt});
23+
}
24+
}
25+
return result;
26+
}
27+
};

0 commit comments

Comments
 (0)