LeetCode题解(1868):Product of Two Run-Length Encoded Arrays(Python)

LeetCode题解 专栏收录该内容
1914 篇文章 5 订阅

题目:原题链接(中等)

标签:数组、双指针

解法时间复杂度空间复杂度执行用时
Ans 1 (Python) O ( N ) O(N) O(N) O ( N ) O(N) O(N)644ms (33.33%)
Ans 2 (Python)
Ans 3 (Python)

解法一:

class Solution:
    def findRLEArray(self, encoded1: List[List[int]], encoded2: List[List[int]]) -> List[List[int]]:
        s1, s2 = len(encoded1), len(encoded2)

        # 将数组中长度坐标改为截止下标
        for i1 in range(1, s1):
            encoded1[i1][1] += encoded1[i1 - 1][1]
        for i2 in range(1, s2):
            encoded2[i2][1] += encoded2[i2 - 1][1]

        # print(encoded1)
        # print(encoded2)

        ans1 = []

        now = 0
        i1, i2 = 0, 0
        while i1 < s1 and i2 < s2:
            v = encoded1[i1][0] * encoded2[i2][0]
            if encoded1[i1][1] < encoded2[i2][1]:
                ans1.append([v, encoded1[i1][1] - now])
                now = encoded1[i1][1]
                i1 += 1
            elif encoded1[i1][1] > encoded2[i2][1]:
                ans1.append([v, encoded2[i2][1] - now])
                now = encoded2[i2][1]
                i2 += 1
            else:  # encoded1[i1][1] == encoded2[i2][1]
                ans1.append([v, encoded1[i1][1] - now])
                now = encoded1[i1][1]
                i1 += 1
                i2 += 1

        ans2 = []
        for v, l in ans1:
            if ans2 and v == ans2[-1][0]:
                ans2[-1][1] += l
            else:
                ans2.append([v, l])

        return ans2
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值