这个分而治之的问题有可能有一个递归的解决方案吗?

2024-06-01 08:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个代码,它通过在连续整数的区间列表中计算给定数字所在的区间数之和来模拟彩票。由于这可以被描述为一个“分而治之”的算法,我想知道是否有可能为它画一个递归的解决方案

def lottery_sort(segments, bets):
    segments = [(segments[2*i], segments[2*i + 1])
                        for i in range(len(segments) // 2)]

    s_open = [i[0] for i in segments]
    s_open.sort()
    s_close = [i[1] for i in segments]
    s_close.sort()

    bets = sorted([bet for bet in bets])

    res = []
    count = 0
    o = 0
    c = 0
    size = len(segments)
    for bet in bets:
        while o < size and s_open[o] <= bet:
            o += 1
            count += 1
        while c < size and s_close[c] < bet:
            c += 1
            count -= 1
        res.append(count)

    return res

Tags: andinforclosesizelencountres